菜鳥程式設計師都能看懂的「職責鏈模式」

2021-10-14 09:52:01 字數 1639 閱讀 9911

職責鏈模式也被稱為責任鏈模式,是行為型設計模式的一種。

職責鏈模式的核心思想是:將請求的傳送者和接收者進行解耦,通過建立乙個接收者物件的「鏈」(就是將多個接收者連線起來)來處理請求。

在職責鏈模式中通常每個接收者都包含另乙個接收者的引用,這樣在處理請求時,如果自己無法處理該請求時就會把請求,傳遞給下乙個接收者,依次類推直到最後。

類圖講解

handler:抽象處理者角色;定義了處理請求的相關介面,並聚合了乙個handler物件。

concretehandlera/b:具體處理者角色;繼承了handler並實現了處理請求的相關介面;主要的作用是處理自己負責的請求,如果請求不屬於自己時,負責將請求傳遞給下乙個處理者。

request:表示請求角色。

client:客戶端測試類。

案例:通過職責鏈模式來實現根據請假天數的不同需要不同領導進行審批的功能。

審核請求 => 對應請求角色

public

class

verifyrequest

抽象處理者

public

abstract

class

}

具體處理者

// 團隊組長

public

class

groupleader

extends

else}}

// 專案經理

public

class

projectmanager

extends

else}}

// 老闆

public

class

boss

extends

else

}}

客戶端測試類

public

class

client

}

測試結果

1、職責鏈模式將請求和處理進行拆分,從而實現了解耦,並且提高了系統的靈活性。

2、客戶端只需要將請求傳送到職責鏈上即可,無需關心請求的處理細節和跳轉過程。

3、使用職責鏈模式會影響程式的效能,特別是鏈比較長的時候,因此需要控制其最大節點數。

4、職責鏈模式採用了類似遞迴的方式完成請求的處理,這種方式會增加除錯的難度。

今天的分享就到這裡了,如果感覺「菜鳥」寫的文章還不錯,記得點讚、**加關注呦!你們的支援就是我堅持下去的動力。文章**寫的有問題的也希望大家可以指出,我會虛心受教。

只有程式設計師才能看懂的15個瞬間

0.甲方要求,加個小功能。1.外行人眼中的程式設計師vs現實中的程式設計師。2.欲怒懟產品經理,結果 3.rm rf 後的處理過程。4.試圖刪除一段老 5.女程式設計師的悲傷 6.向老闆演示剛上線的產品。7.乙個讓人想破了腦袋的頑強bug。8.程式設計師要不得的慣性思維 9.既想馬兒不吃草,又想馬兒...

程式設計師才能看的懂的小段子 你能看懂幾個

1 公司兩位程式設計師同事聊天,甲抱怨說 每天敲 太辛苦了,我想換行 乙說 敲回車啊 2 公司的前端工程師單身久了,就去了交友 去找女朋友,過了段時間問他找到了沒有,工程師說,女朋友沒找到,但是找到了它們頁面的乙個bug。3 程式設計師在菜市場買了一公斤肉,回家拿稱稱了一下,然後就非常氣氛的跑進店裡...

小白都能看懂的交叉編譯生成64位程式

解壓到你喜歡的目錄,這裡假設是使用者目錄 在.bashrc中加入export path gcc linaro aarch64 linux gnu 4.9 2014.07 linux bin path source bashrc或重啟終端 測試,祭出x.cpp include int main aar...