設計模式:行爲模式 - 職責鏈模式

職責鏈模式:使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。將這個對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止

職責鏈模式適合 當客戶提交一個請求時,請求是沿鏈傳遞直至有一個ConcreteHandler對象負責處理它,例如:審批流程,請求流程等

 

 

UML:

 

JAVA:

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

        int[] requests = {2,5,14,3};
        for (int r :requests  ) {
           h1.handleRequest(r);
        }
    }
}
abstract class Handler{
    protected Handler successor;

    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }

    public abstract void handleRequest(int request);//處理請求的抽象方法
}

class ConcreteHandler1 extends Handler{
    @Override
    public void handleRequest(int request) {
        if (request >= 0 && request < 10){
            System.out.println(this.getClass().getName()+" 處理請求"+request);
        }else if (successor != null){
            successor.handleRequest(request);
        }
    }
}
class ConcreteHandler2 extends Handler{
    @Override
    public void handleRequest(int request) {
        if (request >= 10 && request < 20){
            System.out.println(this.getClass().getName()+" 處理請求"+request);
        }else if (successor != null){
            successor.handleRequest(request);
        }
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章