職責鏈模式:使多個物件都有機會處理請求,從而便面請求傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著鏈條傳遞該請求,直到有乙個物件處理它為止。類似狀態模式。接收者和傳送者都沒有對方的明確資訊,且鏈中的物件,自己也不知道鏈的結構。職責鏈可以簡化物件的相互連線,僅保持乙個後繼者的引用,而不需保持須有接收者的引用。大大降低了耦合度。 需要注意的是,他和狀態模式一樣,有可能到了鏈的末端,請求都沒處理。
includeusing std::string;
class request
int getnum()
private:
int m_num;
};class manager
virtual ~manager(){}
virtual void setsuperior(manager*manager)
virtual void requestdeal(request request){}
protected: //受保護被繼承
string m_name;
manager * m_superior;
};//經理
class commanmanager:public manager
virtual void requestdeal(request request)
else
}}};
//總監
class majormanager :public manager
virtual void requestdeal(request request)
else
}}};
//總經理
class generalmanager :public manager
virtual void requestdeal(request request) };
int main()
設計模式 職責鏈模式 C
職責鏈模式 解耦請求的傳送者和請求的接受者,使多個物件都由機會接收到這個請求。所有的物件形成一條鏈,在這條鏈中總有乙個物件可以出來這個請求。場景 有多個物件可以處理乙個請求,那個物件處理這個請求則執行時確定 在不明確接受者的情況下,向多個物件中傳送乙個請求 include 任務型別 enum typ...
C 設計模式 職責鏈模式
目錄 基本概念 與例項 在哪種地方使用 職責鏈模式 chain of responsibility 時多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連線成一條鏈,並沿著這條鏈條傳遞該請求,直到有乙個物件處理它為止。這裡發出這個請求的客戶端並不知道這當中的哪個物件最終...
C 設計模式 職責鏈模式
什麼是職責鏈模式?在gof的 設計模式 可復用物件導向軟體的基礎 一書中對職責鏈模式是這樣說的 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,直到有乙個物件處理它為止 如下圖 對於每個角色,他們都有他們的職責 當我提交了休假申請時,專案經理需要判斷,看...