c 設計模式 職責鏈模式

2022-08-05 08:57:15 字數 734 閱讀 8793

本文參考:

假如有多個物件可以處理同乙個請求,但是具體由哪個物件處理是在執行時刻動態決定的。這時就可以使用職責鏈模式,將處理請求的物件實現成職責物件,並構造鏈。

職責鏈模式主要包含兩種角色:

第一種,抽象職責類。

第二種,具體職責類。

以員工請求加薪為例。如果員工請求加薪小於500,那麼經理可以直接處理,如果員工請求加薪大於500小於800,那麼總監可以處理,如果大於800,那麼還需要上報總經理處理。

//抽象管理者

class manager

virtual void dealwithrequest(string name, int num){}

};//經理

class commonmanager: public manager

void dealwithrequest(string name, int num)

}};//總監

class majormanager: public manager

void dealwithrequest(string name, int num)

}};//總經理

class generalmanager:public manager

void dealwithrequest(string name, int num)

執行結果為:

設計模式 職責鏈模式 C

職責鏈模式 解耦請求的傳送者和請求的接受者,使多個物件都由機會接收到這個請求。所有的物件形成一條鏈,在這條鏈中總有乙個物件可以出來這個請求。場景 有多個物件可以處理乙個請求,那個物件處理這個請求則執行時確定 在不明確接受者的情況下,向多個物件中傳送乙個請求 include 任務型別 enum typ...

C 設計模式 職責鏈模式

目錄 基本概念 與例項 在哪種地方使用 職責鏈模式 chain of responsibility 時多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連線成一條鏈,並沿著這條鏈條傳遞該請求,直到有乙個物件處理它為止。這裡發出這個請求的客戶端並不知道這當中的哪個物件最終...

C 設計模式 職責鏈模式

什麼是職責鏈模式?在gof的 設計模式 可復用物件導向軟體的基礎 一書中對職責鏈模式是這樣說的 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,直到有乙個物件處理它為止 如下圖 對於每個角色,他們都有他們的職責 當我提交了休假申請時,專案經理需要判斷,看...