자바 디자인 모델 (2) - 책임 체인 디자인 모델
13802 단어 디자인 모드
이 대상 을 하나의 체인 으로 만 들 고 이 체인 을 따라 요청 을 전달 합 니 다. 체인 의 한 대상 이 이 요 구 를 처리 하기 로 결정 할 때 까지.
요점 은:,
1. 여러 대상 이 공동으로 하나의 임 무 를 처리한다.2. 이러한 대상 은 체인 식 저장 구 조 를 사용 하여 하나의 체인 을 형성 하고 각 대상 은 자신의 다음 대상 3, 한 대상 이 임 무 를 처리 하 는 것 을 알 고 일부 조작 을 추가 한 후에 대상 을 다음 임 무 를 전달 할 수 있다.이 대상 에서 임무 처 리 를 끝내 고 임 무 를 끝 낼 수도 있다.4. 클 라 이언 트 는 체인 구 조 를 조립 하 는 것 을 책임 지지 만 클 라 이언 트 는 최종 적 으로 누가 임 무 를 처 리 했 는 지 에 관심 을 가 질 필요 가 없다.
여러분 은 회사 의 제출 휴가 절차 로 이해 할 수 있 습 니 다. 먼저 제 가 먼저 양식 을 작성 한 다음 에 팀장 님 께 서 심사 비준 을 하신 다음 에 인 사 를 알려 드 리 고 마지막 으로 웹 팀 에 자신 이 휴가 를 낸 일 을 메 일 로 알려 드 리 겠 습 니 다.전체 과정 은 절차 가 있 기 때문에 순서 가 바 뀌 어 서 는 안 된다. 이것 이 바로 책임 체인 이다.
2. 책임 체인 의 응용 장면
1. 다 중 조건 부 프로 세 스 판단 권한 제어 2. ERP 시스템 프로 세 스 승인 사장, 인사 매니저, 프로젝트 매니저 3. 자바 필터 의 바 텀 구현 Filter
예 를 들 어 자바 필터 에서 클 라 이언 트 가 서버 에 요청 을 보 내 면 필 터 는 매개 변수 필터, session 필터, 폼 필터, 숨 기기 필터, 검 측 요청 헤더 필 터 를 거 칩 니 다.
4. 책임 체인 모드 의 코드 데모
다음 장면 이 있 습 니 다.프로그래머 의 수요 와 제품 매니저 의 말다툼
public abstract class Handler {
private Handler nextHandler;
private int level;
public Handler(int level) {
this.level = level;
}
// , final,
public final void handleMessage(Demand demand) {
if (level == demand.demandLevel()) {
this.report(demand);
} else {
if (this.nextHandler != null) {
System.out.println(" , ");
this.nextHandler.handleMessage(demand);
} else {
System.out.println(" boss, ");
}
}
}
public void setNextHandler(Handler handler) {
this.nextHandler = handler;
}
// ,
public abstract void report(Demand demand);
}
하위 클래스 구현
//
public class TechnicalManager extends Handler { // , 1
public TechnicalManager() {
super(1);
}
@Override
public void report(Demand demand) {
System.out.println(" :" + demand.detail());
System.out.println(getClass().getSimpleName() + ": , ");
}
}
// boss
public class Boss extends Handler { // boos 2
public Boss() {
super(2);
}
@Override
public void report(Demand demand) {
System.out.println(" :" + demand.detail());
System.out.println(getClass().getSimpleName() + ": , ");
}
}
마지막 집행
public class FactoryHandler {
public class Client {
public static void main(String[] args) {
Demand demandA = new DemandA(); // A ( )
Demand demandB = new DemandB(); // ( )
Boss boss = new Boss(); //
TechnicalManager technicalManager = new TechnicalManager(); //
technicalManager.setNextHandler(boss); // // boos
technicalManager.handleMessage(demandA); //
System.out.println("============================");
technicalManager.handleMessage(demandB); //
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.