Java 책임 체인 디자인 모델

책임 체인(Chain of Responsibility) 모드는 객체의 행위 모드입니다.책임 체인 모델에서 많은 대상은 모든 대상이 그 아래에 대한 인용으로 연결되어 하나의 체인을 형성한다.요청은 이 체인에 전달됩니다. 체인의 어떤 대상이 이 요청을 처리하기로 결정할 때까지.이 요청을 보낸 클라이언트는 체인에 있는 어떤 대상이 이 요청을 최종적으로 처리하는지 알지 못하기 때문에 시스템은 클라이언트에게 영향을 주지 않는 상황에서 동태적으로 책임을 재구성하고 분배할 수 있다.
책임 체인 모델은 행위형 디자인 모델 중의 하나에 속하는데 책임 체인을 어떻게 이해합니까?책임 체인은 여러 개의 대상의 수미 연결로 이해할 수 있고 각 노드는 하나의 대상이며 각 대상은 서로 다른 처리 논리에 대응하여 하나의 대상이 처리 요청에 응답할 때까지 끝난다.이 모델은 책임 체인 모델이 된다.
생활 속에서 책임 체인 모델의 원형을 찾을 수 있습니까?이런 예는 매우 많다. 예를 들어 당신이 집을 사러 가려면 먼저 판매원(대상1)이 당신을 접대한다. 당신이 3% 할인을 원한다고 하면 문제없다. 이때 판매원은 3% 할인을 할 권리가 있고 판매원(대상1)이 처리한다.이때 한 부자가 왔다. 10벌을 사려면 5% 할인을 해야 한다고 했다. 판매원(대상 1)은 5% 할인의 권한이 없다. 반드시 상급 지도자를 생각해야 한다. 판매총감독이 신청하고 판매총감독(대상 2)이 신청을 회답해야 한다.이때 국민 남편 샤오왕이 왔다. 샤오왕은 10퍼센트가 건물을 전부 샀다고 말했다. 이때 판매 총감독(대상2)도 그렇게 큰 권한이 없으니 CEO에게 회답을 신청해야 한다.
즉, 모든 고객(Client)은 판매원이 접대하고 고객이 서로 다른 권한을 제시하며 판매원이 서로 다른 대상에 넘겨 차례로 처리한다.고객은 어느 대상이 그의 요청을 처리했는지 관심을 가지지 않아서 요청 발송자와 수용자 간의 결합 관계를 떨어뜨린다.
다음은 출장 출장비 비준을 예로 들어 다음과 같은 책임 체인 모델을 실현하고 추상적인 리더십을 정의한다.

package com.test.demo; 
public abstract class Leader { 
protected Leader nextHandler;//  
public final void handlerRequest(int money){ 
if(money<=limit() ){// ,  
handler(money); 
}else{ 
if(nextHandler!=null){ 
nextHandler.handlerRequest(money);//  
} 
} 
} 
/* 
*   
*/ 
public abstract int limit(); 
/* 
*   
*/ 
public abstract void handler(int money); 
}
이것은 추상적인 클래스입니다. 다음은 몇 가지 클래스를 통해 그것을 계승합니다. 먼저 그룹장 클래스입니다.

package com.test.demo; 
public class GroupLeader extends Leader { 
public int limit() { 
return 1000;// 1000  
} 
public void handler(int money) { 
System.out.println(" "+money); 
} 
}
마스터 클래스:

package com.test.demo; 
public class Director extends Leader { 
@Override 
public int limit() { 
return 5000; 
} 
@Override 
public void handler(int money) { 
System.out.println(" "+money); 
} 
}
매니저 클래스:

package com.test.demo; 
public class Manager extends Leader { 
@Override 
public int limit() { 
return 10000; 
} 
@Override 
public void handler(int money) { 
System.out.println(" "+money); 
} 
}
사장 클래스:

package com.test.demo; 
public class CEO extends Leader { 
@Override 
public int limit() { 
return Integer.MAX_VALUE; 
} 
@Override 
public void handler(int money) { 
System.out.println("CEO "+money); 
} 
}
사장류는 상한선이 없다.다음은 직원 소장이 출장 신청을 하는 것을 정의한다.

package com.test.demo; 
public class XiaoZhang { 
public static void main(String[] args) { 
GroupLeader groupLeader=new GroupLeader(); 
Director director=new Director(); 
Manager manager=new Manager(); 
CEO ceo=new CEO(); 
groupLeader.nextHandler=director; 
director.nextHandler=manager; 
manager.nextHandler=ceo; 
groupLeader.handlerRequest(50000); 
groupLeader.handlerRequest(500); 
groupLeader.handlerRequest(5000); 
} 
}
장 군은 모두 팀장처럼 세 건을 신청했는데 이때 운행 실례는 다음과 같다.
우리는 서로 다른 금액이 서로 다른 대상에서 처리된 것을 볼 수 있다. 장 군은 누가 처리했는지에 관심이 없다. 그는 팀장만 찾으면 된다.이것이 바로 책임 체인 모델의 특징이다.
Java 책임 체인 디자인 모델에 대한 내용은 여기까지 소개해 드리겠습니다. 도움이 되었으면 좋겠습니다!

좋은 웹페이지 즐겨찾기