책임 체인 패턴 : 여러 객체가 객체의 다음 홈에 해당하는 참조에 의해 체인에 연결되며 체인의 수신 객체가 요청을 처리 할 때 까지이 체인에 요청이 전달됩니다. 요청하는 클라이언트는 누가 체인의 요청을 처리 할 사람을 알지 못하므로 시스템은 클라이언트에 영향을 미치지 않고 책임을 동적으로 재구성하고 할당 할 수 있으므로 요청 발신자와 요청 핸들러 간의 결합을 피할 수 있습니다.
책임의 사슬에는 세 가지 역할이 있습니다.
1. 추상 프로세서 역할
2. 특정 핸들러 역할
3. 요청 발신자의 작은 예 : 집을 사러 가서 집을 구입할 때 협상해야한다고 가정 해 봅시다. 집을 판매하는 사람의 직책은 다르며 할인 된 가격도 다릅니다. 다른 위치는 요청을 처리하기위한 체인을 형성 할 수 있습니다. 잠정적으로 설정하십시오.
Java 인스턴스
클래스 다이어그램 :
/ *** 추상 책임*/ 공개 초록 클래스 ifilter {private ifilter Accefor; 공개 ifilter getsuccessor () {return cleasroror; } public void setSuccessor (ifilter confleror) {this.successor = 후속 자; } public Abstract void handleFilter (); 공개 초록 void handlefilter2 (); } / *** 특정 책임*/ 공개 클래스 ConcreteFilter 확장 ifilter {private String name; Public ConcreteFilter (문자열 이름) {this.name = 이름; } @override public void handlefilter () { / * * 후속작이있는 경우 먼저 처리 한 다음 한 번 * / system.out.println (이름 + "요청 처리")을 처리합니다. if (getSuccessor ()! = null) {getSuccessor (). handleFilter (); }} @override public void handlefilter2 () { / * * 후임자가 있으면 후임자는 직접 처리됩니다. 그렇지 않으면 직접 처리합니다*/ if (getSuccessor ()! = null) {getSuccessor (). handleFilter2 (); } else {system.out.println (이름 + "요청 처리"); }}} 공개 클래스 테스트 {public static void main (String [] args) {ifilter filter1 = new ConcreteFilter ( "권한 필터"); // 허가 필터 ifilter filter2 = new ConcreteFilter ( "접미사 필터"); // 접미사 필터 ifilter ifilter filter3 = new ConcreteFilter ( "Style-Filter"); // Filter1.SetSuccessor (Filter2); filter2.SetSuccessor (Filter3); System.out.println ( "----- 다음은 모든 프로세서 (후임자 포함)에 의해 처리되며 주문은 레벨 별 패스 ------"); filter1.handleFilter (); System.out.println("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------인쇄:
------ 다음은 각 프로세서 (후임자 포함)의 프로세스이며, 주문은 또 다른 수준이기도합니다 ----- 권한 필터는 요청 접미사 필터가 요청을 처리하는 요청을 처리합니다. successor---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------