目的
讓多個物件有機會處理某一訊息,降低訊息發送者與接收者之間的耦合。
他將接收者物件串連起來,讓訊息流經其中,直到被處理了為止。
結構
參與者
- Handler – 處理的介面,(可有可無)實作能指向下一個處理者
- ConcreteHander – 處理者,如果無法處理,則會試著丟給下一個處理者
優點
降低耦合 – 使用者不需要知道誰會處理,只要交付處理即可
範例
假設採購系統會根據金額呈核給上級
- 1000 元以下,小組長即可簽核
- 5000 元以下,組長可以簽核
- 10000 元以下需主管簽核
- 10000 元以上需老闆簽核
建立一個抽象類別
接著有點像串香腸的方式,一個一個接著
小組長簽核 :
組長 :
主管 :
老闆 :
建立一個類別供使用者呼叫
執行 :
執行結果 :