責任鏈模式也叫做職責鏈模式、職責連鎖模式。在該模式下,很多物件由每乙個物件對其下家的引用而連線起來形成一條鏈,請求在這個鏈上傳遞,直到某個物件處理了該請求。在鏈上的處理者有兩個選擇,乙個是處理該請求,乙個是將請求推給下一家。乙個請求最終可能會出現沒有被處理的情況。
例如客戶把乙個請求交給a,a完成了a部分之後,把任務交給b,b完成了b部分交給c,c完成了c部分後,交給d。此時d判斷能否完成d部分,能完成,則完成它,不能完成,則不完成,然後將結果通知客戶。
優點:
缺點:
類圖如下:
示例**如下:
#include using namespace std;
/* 抽象基類 */
class handle
virtual void handlerequest() = 0;
void setsuccessor(handle *succ)
handle* getsuccessor()const
protected:
handle()
handle(handle* succ)
private:
handle* _succ;
};/* 具體實現子類a */
class concretehandlea :public handle
concretehandlea(handle* succ) :handle(succ)
void handlerequest()
else
}};/* 具體實現子類b */
class concretehandleb :public handle
concretehandleb(handle* succ) :handle(succ)
void handlerequest()
else
}};int main()
執行結果如下: 設計模式利劍10 責任鏈模式
定 義 使多個物件都有機會處理請求,從而避免了請求的傳送者和接受者之間的耦合,將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止 優 點 將請求和處理分開,請求者可以不知道是誰處理的,處理者不用知道請求的全貌,兩者解耦,提高了靈活性,責任鏈模式減低了請求 的傳送端和接收端之間的耦合,...
簡易設計模式10 責任鏈模式
我們在工作過程中有時候會請假休息,當我們填寫一張請假單後,在這張假單簽字的人,是一級接一級地推進,比如直屬領導 部門總監 ceo 行政人員這樣乙個流程,處理這張假單的過程就是乙個責任的傳遞,他們構成了乙個責任的鏈條,這就是責任鏈模式的核心思想。本篇將詳細梳理責任鏈模式。責任鏈模式也稱職責模式,它是一...
責任鏈模式
責任鏈模式 chain of responsibility 的目標是使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞請求,直到有乙個物件處理它為止。舉個例子。你到銀行去辦理業務,只是簡單的存個錢,也許atm就解決你的問題。如果你是為了交費...