他使得多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。他通過將這些物件連成一條鏈,並沿著這條鏈來傳遞請求, 直到有乙個物件處理他為止。
但是這個模式要求我們處於後方的物件需要能夠處理更多的職責, 需要確保請求傳遞到了鍊錶末端一定可以被處理。而在每個物件中, 需要確定是自行處理, 還是轉移責任。
一般來說鍊錶的越後方, 處理的職責也越大
"請假"
&& request->number() <=
2) else
}};class czongjian : public cmanager
if (request->requesttype() ==
"請假"
&& request->number() <=
5) else
}};class cgeneralmanager : public cmanager
if (request->requesttype() ==
"請假")
else
if (request->requesttype() ==
"加薪"
&& request->number() <=
500)
else
if (request->requesttype() ==
"加薪"
&& request->number() >
500)
}};#endif
// _manager_h_
main.cpp
#include "manager.h"
#include
using
namespace
std;
int main()
c 責任鏈模式
責任鏈模式 chain of responsibility 的目標是使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞請求,直到有乙個物件處理它為止。結構圖為 用乙個採購的例子來說明,採購人員在進行採購前需經過上級部門的批准,對於不同金額的...
C 設計模式 責任鏈模式
優點 請求和處理分開 缺點 避免出現超長鏈的情況,一般的做法是在handler中設定乙個最大節點數量,在setnext方法中判斷是否已經是超過其閾值,超過則不允許該鏈建立,避免無意識地破壞系統效能 抽象處理者 ifndef handler h define handler h include req...
C 設計模式之責任鏈模式
在現實生活中,有很多請求並不是乙個人說了就算的,例如面試時的工資,低於1萬的薪水可能技術經理就可以決定了,但是1萬 1萬5的薪水可能技術經理就沒這個權利批准,可能就需要請求技術總監的批准,所以在面試的完後,經常會有面試官說,你這個薪水我這邊覺得你這技術可以拿這個薪水的,但是還需要技術總監的批准等的話...