使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞請求,直到有乙個物件處理它為止。
從定義分析:
對於乙個請求會有多個物件對其進行**。
請求的傳送者和最終處理請求的接受者之間互相並不知道,沒有任何耦合關係。
最終能夠處理乙個請求的物件有且只有乙個,如果沒有則表示處理過程or職責鏈設定出現錯誤。
客戶提交乙個請求時,請求沿鏈傳遞直至有乙個concretehandler物件負責處理它。
每乙個concretehandler僅需保持乙個指向其後繼者的引用,而不需保持它所有的候選者的引用。
由客戶端來定義鏈的結構,因此可以隨時增加or修改處理乙個請求的結構。增強了給物件指派職責的靈活性。
公司最底層員工通過提交申請,發起請假、加薪申請。經過逐層次審批,得到申請結果。
//經理
public class commonmanager extends manager
@override
public void handlerequest(request request) else}}
majordomo
//總監
public class majordomo extends manager
@override
public void handlerequest(request request) else}}
generalmanager
//總經理
public class generalmanager extends manager
@override
public void handlerequest(request request) else if (request.gettype().equals("加薪") && request.getnumber() <= 500) else if (request.gettype().equals("加薪") && request.getnumber() > 500) }}
執行結果
經理:小菜請假2天的請求得到批准!
總監:小菜請假4天的請求得到批准!
總經理:小菜加薪500元,請求得到批准!
總經理:小菜加薪1000元,再說吧!
020 第24章 職責鏈模式
簡述 職責鏈模式 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。職責鏈模式包括 處理請示介面類 具體處理者類。處理請示介面類 定義處理請求的介面。具體處理者類 繼承自處理請示介面類,處理它所負責的請求,...
職責鏈模式
1.職責鏈 namespace dutychainpattern 用來處理請求 public abstract void transmitrequest int request 班主任 職責鏈上的乙個節點,在裡面進行判斷,看能否處理請求,不能則將請求轉移 public class classadvi...
職責鏈模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...