天天看點

職責鍊模式設計模式之職責鍊模式

設計模式之職責鍊模式

職責鍊模式:使多個對象都有機會處理請求,進而避免請求的發送者和接收者之間的耦合關系。 将這個對象連成一條鍊,并沿着這條鍊傳遞該請求,知道有一個對象處理它為止。

--------《大話設計模式》

就拿大話設計模式的這個例子來說

小菜實習期到了,想轉正,他就向經理提出想加薪,經理無法做主就像總監提出了小菜的想法,總監也無法做主,最終向總經理提出了小菜的請求

從這個例子我們能簡單的看出,職責鍊模式就是若無法處理某個請求,就一層一層的傳遞知道有個類能處理這個請求為止

管理者責任類,用來設定管理者姓名,設定管理者,幫員工完成加薪請求

職責鍊模式設計模式之職責鍊模式

以下是經理總經理總監類,這三個類大同小異,就是指責中處理的分類

職責鍊模式設計模式之職責鍊模式
職責鍊模式設計模式之職責鍊模式
職責鍊模式設計模式之職責鍊模式

以下是申請類,有設定申請的類型,内容,數量的多少相應的方法

職責鍊模式設計模式之職責鍊模式

以下是測試類

職責鍊模式設計模式之職責鍊模式
職責鍊模式設計模式之職責鍊模式

我們看到結果,當加薪3300的時候大于我們設定的500,總監就會考慮

我們再設定一下400,就會按照我們的預期同意

職責鍊模式設計模式之職責鍊模式

一下附上我們這次代碼的結構圖

職責鍊模式設計模式之職責鍊模式

此次代碼重要的是了解整個職責鍊模式的運作過程,中間代碼還有一些瑕疵,比如沒有處理若請假6天以上該由誰去解決

職責鍊模式的優點:接受者和發送者都沒有對方的明确資訊,且鍊中的對象自己也并不知道鍊的結構。結果是職責鍊可簡化對象的互相連接配接,它們僅需要保持一個指向後繼承者的引用,而需要保持它所有的候選接受者的引用,提高了系統的靈活性和可擴充性。

職責鍊模式的缺點;每次都是從鍊頭開始,一級一級往上傳遞,當職責鍊比較長時,可能會有較嚴重的性能問題

若有出錯,還望指正,共勉

繼續閱讀