職責鏈模式(chainofresponsibility):使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。
職責鏈的好處:
當客戶提交乙個請求時,請求時沿鏈傳遞直至有乙個concretehandler物件負責處理它。
使得接收者和傳送者都沒有對方的明確資訊且鏈中的物件自己也並不知道鏈的結構。結果是職責鏈可簡化物件的相互鏈結,它們僅需保持乙個指向其後繼者的引用,而不需保持它所有的候選接受者的引用。
客戶端:
類實現://client
int main();
//迴圈給最小處理者提交請求,不同的數額由不同許可權處理者處理
for(auto i = 0; i < 8; ++i)
// output:
// handler request
// handler request
// handler2 request
// handler3 request
// handler2 request
// handler request
// handler3 request
// handler3 request
return
0;}
//handler處理類
class handler
//處理請求的抽象方法
virtual
void handlerequest(int request){}
};//具體處理類,處理它們負責的請求,可訪問的後繼者,如果可以處理該請求,就處理之,否則就將該請求**給它的後繼者
class concretehandler: public handlerelse
if(successor != null) //否則轉移到下一位
successor->handlerequest(request);
}};class concretehandler2: public handlerelse
if(successor != null) //否則轉移到下一位
successor->handlerequest(request);
}};class concretehandler3: public handlerelse
if(successor != null) //否則轉移到下一位
successor->handlerequest(request);
}};
C 設計模式淺識裝飾模式
裝飾模式 動態的給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。裝飾模式的四個角色 元件類 component 具體元件類 coneretecomponent 裝飾類 decorator 從外類來擴充套件component類的功能,但對於component來說是無需知道de...
設計模式 職責鏈模式 C
職責鏈模式 解耦請求的傳送者和請求的接受者,使多個物件都由機會接收到這個請求。所有的物件形成一條鏈,在這條鏈中總有乙個物件可以出來這個請求。場景 有多個物件可以處理乙個請求,那個物件處理這個請求則執行時確定 在不明確接受者的情況下,向多個物件中傳送乙個請求 include 任務型別 enum typ...
C 設計模式 職責鏈模式
目錄 基本概念 與例項 在哪種地方使用 職責鏈模式 chain of responsibility 時多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連線成一條鏈,並沿著這條鏈條傳遞該請求,直到有乙個物件處理它為止。這裡發出這個請求的客戶端並不知道這當中的哪個物件最終...