責任鏈模式 (chain of responsibility pattern) , 為請求者建立乙個接受者物件的鏈,這種模式對請求對傳送者和請求者進行解耦。
責任鏈模式通常每個接收者都包含對另乙個接收者都引用,如果乙個物件不能處理該請求,那麼他就會把相同的請求傳給下乙個接收者解耦,以此類推。
這種型別的設計模式屬於行為型模式。
oa系統採購審批專案
採購員採購公司用品
如果金額小於等於5000,由小組長審批。
如果金額小於等於10000,交由專案經理審批。
如果金額小於等於30000,由總監審批。
如果大於30000,由總經理審批。
建立審批物件
@data
@tostring
public
class
purchaserequest
}
public
abstract
class
public
(string name)()
public
void
/** * 處理審批的方法
* @param purchaserequest
*/public
abstract
void
processrequest
(purchaserequest purchaserequest)
;}
public
class
extends
@override
public
void
processrequest
(purchaserequest purchaserequest)
else
}}
public
class
extends
@override
public
void
processrequest
(purchaserequest purchaserequest)
else
}}
public
class
extends
@override
public
void
processrequest
(purchaserequest purchaserequest)
else
}}
public
class
extends
@override
public
void
processrequest
(purchaserequest purchaserequest)
}}
客戶端
優點:
1)將請求和處理分開,實現解耦,提高系統的靈活性
2)簡化了物件,使物件不需要知道鏈的結構
缺點:
1)效能會收到影響,特別是在鏈比較長的時候
2)不能保證請求一定被接收
適用場景:
1) 有多個物件可以處理同乙個請求 : 多級請求 、請假/加薪請求
注 : 23種設計模式的講解到此結束啦!!後面會一直完善github demo位址 : ~~~傳送門~~~ 深入理解23種設計模式 9 外觀模式
外觀模式 facade pattern 門面模式,隱藏系統的複雜性,並向客戶端提供了乙個客戶端可以訪問系統的介面,這種型別的設計模式屬於結構型模式,他向現有的系統新增乙個介面,來隱藏系統的複雜性,這種模式涉及到乙個單一的類,該類提供類乙個客戶端請求的簡化方法和對現有系統類方法對委託呼叫 傳送郵件 p...
深入理解23種設計模式 13 命令模式
命令模式 command pattern 在軟體設計中,我們經常需要向某些物件傳送請求,但是並布置的請求的接收者是誰,也不知道被請求的操作是哪個,我們只需要程式執行時指定具體的請求接受者即可,此時,可以使用命令模式來進行設計 命令模式使得請求傳送者與請求接收者消標題 除彼此間的耦合,讓物件之間呼叫關...
深入理解23種設計模式 21 狀態模式
狀態模式 state pattern 它主要是用來解決物件在多種狀態之間的轉換,需要對外輸出不同的行為的問題,狀態和行為是一一對應的,狀態之間可以互相轉換。當乙個物件的內在狀態改變時,允許改變其行為,這個物件看起來是改變了其他類。活動 假如每參加一次這個活動要扣除50積分,中獎概率是10 獎品數量固...