디자인 모델 의 Chain of Responsibility 모델 학습 (책임 체인 모델)
디자인 모드
대상 개발 자 들 은 대상 간 의 책임 을 명확 하고 줄 여 대상 간 의 결합 절 차 를 낮 추 기 를 원한 다.이렇게 하면 우리 의 시스템 은 더욱 쉽게 수정 되 는 동시에 결함 이 발생 하 는 위험 도 낮 출 수 있다.어느 정도 자바 언어 자 체 는 대상 간 의 결합 도 를 낮 추 는 데 도움 을 줄 수 있다.클 라 이언 트 는 대상 의 인터페이스 에 만 접근 할 수 있 을 뿐 구체 적 인 세부 사항 과 는 관계 가 없다.인터페이스 라 는 방식 을 빌려 클 라 이언 트 는 방법의 기능 만 알 면 된다.만약 에 우리 가 특정한 차원 구조 에 따라 조직 을 한다 면 예 를 들 어 조직 을 책임 체인 으로 한다 면 클 라 이언 트 코드 는 자신 이 어떤 종 류 를 사용 할 지 미리 알 필요 가 없 을 것 이다.이러한 상황 에서 체인 의 모든 대상 은 방법 이 있 습 니 다. 클 라 이언 트 코드 가 이 방법 을 호출 할 때 이 대상 들 은 이 방법 을 실행 하거나 이 체인 을 따라 이 방법 으로 요청 을 전달 합 니 다.
Chain of Responsibility 모드 는 모든 대상 이 요청 을 처리 할 지 여 부 를 결정 할 수 있 는 기 회 를 제공 하여 요청 한 발송 자 와 수신 자 간 의 결합 을 피 할 수 있 습 니 다.
예:
한 번 은 내 가 회사 에 가서 차 표를 청구 한 적 이 있 는데, 동 료 는 나 에 게 15 층 에 있다 고 만 말 했 지만, 구체 적 으로 어디 에 있 는 지 그 도 잘 몰 랐 다.그래서 저 는 15 층 에 올 라 가서 문 에 들 어서 자마자 15 프런트 에 물 어 봤 습 니 다. 프런트 MM 은 그녀 도 잘 모른다 고 했 습 니 다. 옆 에 있 는 보험 팀 에 게 물 어 봐 도 됩 니 다. 보험 팀 은 우리 회사 의 보험 배상 청 구 를 맡 았 고 다른 차비 도 잘 모 릅 니 다.그래서 그 는 우리 에 게 계속 앞으로 가서 복지 팀 에 게 물 었 다. 복지 팀 이 알 고 재무 팀 의 결산 을 알 아야 한다 고 말 했다. 장 소 는 바로 내 뒤에 있다.그래서 나 는 걸 어가 서 표를 작성 하고 차 표를 내 고 갔다.
이 일 은 간단 해 보이 지만 사실은 하나의 책임 체인 모델 로 모든 구성원 팀 은 자신의 범위 내의 업무 만 책임 진다.범위 밖의 업무 내용 에 대해 서 는 전혀 모 르 거나 조금 만 알 수 있 습 니 다.그래서 당신 이 보험 팀 을 찾 았 을 때, 그 는 차표 가 그의 업무 범위 내 에 있 는 것 이 아니 라 는 것 을 보 았 다.그 는 너 를 옆 에 있 는 복지 팀 에 소개 할 것 이다.다음은 코드 로 그들 을 설명 합 시다.
먼저 요청 클래스 를 정의 합 니 다. 이 요청 클래스 는 바로 제 가 차 표를 청산 해 야 한 다 는 것 입 니 다.
1. interface 핸들 (다른 사무 처리)
package com.xuyi.responsibility;
public interface Handle {
public void handleRequest(Request request);
}
2. 세 부서 가 서로 다른 업 무 를 처리한다.
HandleBoon.java
package com.xuyi.responsibility;
/**
*
* @author xuyi
*
*/
public class HandleBoon implements Handle {
private Handle otherHandle;
public void setOtherHandle(Handle otherHandle) {
this.otherHandle = otherHandle;
}
public void handleRequest(Request request) {
System.out.println(" ");
if(request.getType().equals(" ")){
System.out.println(" ");
request.setFinished(true);
}else{
if(otherHandle!=null&&!request.isFinished())
otherHandle.handleRequest(request);
}
}
}
HandleInsure.java
package com.xuyi.responsibility;
/**
*
* @author xuyi
*
*/
public class HandleInsure implements Handle {
private Handle otherHandle;
public void setOtherHandle(Handle otherHandle) {
this.otherHandle = otherHandle;
}
public void handleRequest(Request request) {
System.out.println(" ");
if(request.getType().equals(" ")){
System.out.println(" ");
request.setFinished(true);
}else{
if(otherHandle!=null&&!request.isFinished())
otherHandle.handleRequest(request);
}
}
}
HandleFinance.java
package com.xuyi.responsibility;
/**
*
* @author xuyi
*
*/
public class HandleFinance implements Handle {
private Handle otherHandle;
public void setOtherHandle(Handle otherHandle) {
this.otherHandle = otherHandle;
}
public void handleRequest(Request request) {
System.out.println(" ");
if(request.getType().equals(" ")){
System.out.println(" ");
request.setFinished(true);
}else{
if(otherHandle!=null&&!request.isFinished())
otherHandle.handleRequest(request);
}
}
}
3. 보 낸 요청
Request.java
package com.xuyi.responsibility;
/**
*
* @author xuyi
*
*/
public class Request {
private String type;
private boolean finished;
public boolean isFinished() {
return finished;
}
public void setFinished(boolean finished) {
this.finished = finished;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
4.Test.java
package com.xuyi.responsibility;
//Chain of Responsibility ( )
public class Test {
public static void main(String[] args) {
HandleBoon handleBoon = new HandleBoon();
HandleInsure handleInsure = new HandleInsure();
HandleFinance handleFinance = new HandleFinance();
//
handleBoon.setOtherHandle(handleInsure);
handleInsure.setOtherHandle(handleFinance);
//
Request request = new Request();
request.setType(" ");
handleBoon.handleRequest(request);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.