天天看點

設計模式-責任鍊設計模式

責任鍊設計模式,是行為型設計模式的巅峰之作。

現在有一個場景,請假申請。請假時間的長短,需要不同級别的上司才能審批。

萬物皆對象嘛,請假需要工号、姓名、原因、時長、結果等等,那我們來定義一個請假的類。其實其就是一個上下文環境(context),儲存業務進行中參數-----中間結果-----最終結果。行為型設計模式重用的标配,把行為轉移。

請假需要new一個執行個體:

第一種方式,審批邏輯都寫在上端,直接就是需求翻譯,沒有任何加工,談不上什麼擴充,面向過程:

第二種方式,面向對象:封裝--繼承--多态,轉移業務邏輯,也隻是一個翻譯機,翻譯完+面向對象,其實完全沒有涉及加工沒有思考。

上司類s:

設計模式-責任鍊設計模式
設計模式-責任鍊設計模式

view code

下面進行邏輯的翻譯:

不要直接翻譯的邏輯,需要涉及,現在的場景分析是,1、權限範圍内,審批通過;2、權限範圍外,交給下一環節審批,寫的代碼又多了一個,指定洗衣環節,甩鍋大法開始。

首先定義一個抽象父類:

上司類需要繼承這個抽象類:

其他的上司類以此類推.....

調用的時候,隻需要找最低權限的人,去審批

以上,轉移了申請送出的邏輯,這次符合實際情況,有了自己的思考和設計在裡面。

甩鍋大法開始了,一樣,上司類需要實作抽象父類,不過在audit方法中稍作了改動

設計模式-責任鍊設計模式
設計模式-責任鍊設計模式

下面需要找上司審批了:

以上,把流暢環節邏輯從業務類轉移了。

繼續閱讀