Java設計模式<責任鏈>

Java設計模式<責任鏈>

意圖

  • 避免請求發送者與接收者耦合在一起,讓多個對象都有可能接收請求,將這些對象連接成一條鏈,并且沿著這條鏈傳遞請求,直到有對象處理它為止

場景

  • 處理消息的時候以過濾很多道

優點

  • 降低耦合度。它將請求的發送者和接收者解耦
  • 簡化了對象。使得對象不需要知道鏈的結構
  • 增強給對象指派職責的靈活性。通過改變鏈內的成員或者調動它們的次序,允許動態地新增或者刪除責任
  • 增加新的請求處理類很方便

現實場景舉例

JavaDemo

審批人接口

public abstract class Worker {

    protected Worker worker;

    public abstract void permit();

    public Worker setNext(Worker next){
        this.worker = next;
        return next;
    }


}

Team Leader

public class TLWorker extends Worker{
    public void permit() {

        System.err.println("i am the TL ,I have permitted ");

        if(worker != null){
            worker.permit();
        }
    }
}

PM

public class PMWorker extends Worker {
    public void permit() {

        System.err.println("i am the PM ,I have permitted ");
        if(worker != null){
            worker.permit();
        }
    }
}


CEO

public class CEOWorker extends Worker {

    public void permit() {

        System.err.println("i am the CEO ,I have permitted ");
        if(worker != null){
            worker.permit();
        }
    }
}

測試類

public class DemoMain {

    public static void main(String[] args) {
        CEOWorker ceoWorker = new CEOWorker();
        PMWorker pmWorker = new PMWorker();
        TLWorker tlWorker = new TLWorker();
        tlWorker.setNext(pmWorker).setNext(ceoWorker);
        tlWorker.permit();
    }
}

輸出

i am the TL ,I have permitted 
i am the PM ,I have permitted 
i am the CEO ,I have permitted 

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容