設計模式之職責鍊模式
職責鍊模式:使多個對象都有機會處理請求,進而避免請求的發送者和接收者之間的耦合關系。 将這個對象連成一條鍊,并沿着這條鍊傳遞該請求,知道有一個對象處理它為止。
--------《大話設計模式》
就拿大話設計模式的這個例子來說
小菜實習期到了,想轉正,他就向經理提出想加薪,經理無法做主就像總監提出了小菜的想法,總監也無法做主,最終向總經理提出了小菜的請求
從這個例子我們能簡單的看出,職責鍊模式就是若無法處理某個請求,就一層一層的傳遞知道有個類能處理這個請求為止
管理者責任類,用來設定管理者姓名,設定管理者,幫員工完成加薪請求
以下是經理總經理總監類,這三個類大同小異,就是指責中處理的分類
以下是申請類,有設定申請的類型,内容,數量的多少相應的方法
以下是測試類
我們看到結果,當加薪3300的時候大于我們設定的500,總監就會考慮
我們再設定一下400,就會按照我們的預期同意
一下附上我們這次代碼的結構圖
此次代碼重要的是了解整個職責鍊模式的運作過程,中間代碼還有一些瑕疵,比如沒有處理若請假6天以上該由誰去解決
職責鍊模式的優點:接受者和發送者都沒有對方的明确資訊,且鍊中的對象自己也并不知道鍊的結構。結果是職責鍊可簡化對象的互相連接配接,它們僅需要保持一個指向後繼承者的引用,而需要保持它所有的候選接受者的引用,提高了系統的靈活性和可擴充性。
職責鍊模式的缺點;每次都是從鍊頭開始,一級一級往上傳遞,當職責鍊比較長時,可能會有較嚴重的性能問題
若有出錯,還望指正,共勉