GoF 비헤이비어 체인 모드

1694 단어

직책 체인 모델의 정의


여러 대상이 요청을 처리할 수 있는 기회를 주어 요청의 발송자와 수신자 간의 결합 관계를 피한다.이 대상들을 하나의 체인으로 연결하고, 이 체인을 따라 요청을 전달하며, 대상이 그것을 처리할 때까지.

직책 체인 모델의 본질


직책 분리, 동적 조합

예제 1

/**
 *  , 
 */
public abstract class Handler {

    protected Handler successor;

    public abstract void handleRequest();


    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }
}
/**
 *  , 
 */
public class ConcreteHandler1 extends Handler {

    @Override
    public void handleRequest() {
        //  
        //  
        boolean someCondition = false;
        if (someCondition) {
            System.out.println(" Handler1 ");
        } else {
            System.out.println(" Handler1 ");
            // , , 
            if (this.successor != null) {
                this.successor.handleRequest();
            }
        }
    }

}
/**
 *  , 
 */
public class ConcreteHandler2 extends Handler {

    @Override
    public void handleRequest() {
        // 
        // 
        boolean someCondition = true;
        if (someCondition) {
            System.out.println(" Handler2 ");
        } else {
            System.out.println(" Handler2 ");
            // , , 
            if (this.successor != null) {
                this.successor.handleRequest();
            }
        }
    }

}
public class Client {
    public static void main(String[] args) {
        Handler h1 = new ConcreteHandler1();
        Handler h2 = new ConcreteHandler2();

        h1.setSuccessor(h2);
        h1.handleRequest();
    }
}

좋은 웹페이지 즐겨찾기