책임 패턴의 체인은 물체의 행동 패턴입니다. 책임 체인 모드에서 많은 객체가 각 객체의 다음 홈 참조로 연결되어 체인을 형성합니다. 체인의 객체가 요청을 처리하기로 결정할 때까지 요청 이이 체인에 전달됩니다. 이 요청을하는 클라이언트는 체인의 어떤 객체가 궁극적으로 요청을 처리하는지 알지 못하므로 시스템이 클라이언트에 영향을 미치지 않고 책임을 동적으로 재구성하고 할당 할 수 있습니다.
책임 체인 모델은 행동 설계 모델 중 하나입니다. 책임 체인을 이해하는 방법? 책임 체인은 처음과 끝에서 여러 객체를 연결하는 것으로 이해 될 수 있습니다. 각 노드는 객체이며 각 객체는 객체가 처리 요청이 끝날 때까지 다른 처리 로직에 해당합니다. 이 모델은 책임 체인 모델이됩니다.
인생에서 책임 체인 모델의 프로토 타입을 찾을 수 있습니까? 이런 종류의 예가 많이 있습니다. 예를 들어, 집을 사고 싶다면 첫 번째는 영업 사원 (응용 프로그램 1)이 귀하를 받는다는 것입니다. 3% 할인을 원한다면 아무런 문제가 없습니다. 현재 영업 사원은 3% 할인을 할 권한을 가질 것이며 영업 사원 (응용 프로그램 1)은이를 처리 할 것입니다. 현재 부자가 와서 10 대를 사고 싶다고 5% 할인을 요청했다고 말했다. 영업 직원 (애플리케이션 1)은 5% 할인을 할 권한이 없었습니다. 그는 우수한 리더, 영업 이사 및 영업 이사 (응용 프로그램 2)에 신청해야했습니다. 현재 전국 남편 Xiao Wang이왔다. Xiao Wang은 자신이 모든 부동산을 10 % 구매했다고 말했다. 현재 영업 담당 이사 (Target 2)는 그러한 권한이 많지 않았으며 CEO의 승인을 신청해야했습니다.
다시 말해, 각 고객은 영업 사원이받습니다. 고객은 다른 권한을 제안하고 영업 사원은 배송을 위해 다른 대상으로 넘겨줍니다. 클라이언트는 요청을 처리하는 객체를 신경 쓰지 않으므로 송신자와 요청의 수신자 간의 커플 링 관계가 줄어 듭니다.
아래에서는 비즈니스 여행 여행 비용 승인을 예로 사용하여 다음 책임 체인 모델을 구현하여 먼저 추상 리더십 클래스를 정의합니다.
패키지 com.test.demo; 공개 초록 클래스 리더 {보호 된 리더 Nexthandler; // 이전 리더십 대중 최종 공허 핸들러 레크 (int money) {if (money <= limit ()) {// selse {if (nexthandler! = null) {nexthandler.handlerRequest (Money); // Processing}}}}}}}}}}}}}}}}}}}. /** 승인*/ public Abstract void handler (int money); }이것은 추상적 인 수업입니다. 다음은 여러 클래스를 통해 상속합니다. 첫째, 그룹 리더 클래스 :
패키지 com.test.demo; Public Class Groufleader Extends 리더 {public int limit () {return 1000; // 팀 리더가 1,000 위안 승인 당국} public void handler (int money) {System.out.println ( "팀 리더 승인"+money)을 가지고 있음을 나타냅니다. }}감독자 카테고리 :
패키지 com.test.demo; 공공 클래스 디렉터 확장 리더 {@override public int limit () {return 5000; } @override public void handler (int money) {System.out.println ( "감독자 승인"+Money); }}관리자 카테고리 :
패키지 com.test.demo; Public Class Manager 확장 리더 {@override public int limit () {return 10000; } @override public void handler (int money) {system.out.println ( "관리자 승인"+Money); }}보스 카테고리 :
패키지 com.test.demo; 공개 클래스 CEO는 리더를 확장합니다 {@override public int limit () {return integer.max_value; } @override public void handler (int money) {System.out.println ( "CEO 승인"+Money); }}보스에는 제한이 없습니다. 다음은 여행 상환을 신청하는 직원 Xiao Zhang의 정의입니다.
패키지 com.test.demo; public class xiaozhang {public static void main (String [] args) {groupleader groufleader = new Groupleader (); 이사 이사 = 새로운 이사 (); Manager Manager = New Manager (); CEO CEO = 새로운 CEO (); groupleader.nexthandler = 감독; Director.nexthandler = 관리자; Manager.nexthandler = CEO; groupleader.handlerRequest (50000); groupleader.handlerRequest (500); groupleader.handlerRequest (5000); }}Xiao Zhang은 팀 리더와 같은 세 가지 거래를 신청했습니다. 이 시점에서 작동 예는 다음과 같습니다.
우리는 다른 자금이 다른 물체에 의해 처리된다는 것을 알 수 있습니다. Xiao Zhang은 누가 그들을 처리하는지 상관하지 않습니다. 그는 단지 팀 리더를 찾아야합니다. 이것은 책임 체인 모델의 특징입니다.
이는 Java Responsibility Chain Design 모델에 관련 컨텐츠를 소개하는 것입니다. 나는 그것이 당신에게 도움이되기를 바랍니다!