設計模式C 實現二十 職責鏈模式

2021-07-02 15:53:27 字數 992 閱讀 9299

職責鏈模式(chain of responsibility):使多個物件都有機會處理請求,從而避免請求的傳送者和接受之間的耦合關係。將這個物件連城一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

職責鏈模式處理中,當客戶有乙個請求時,請求沿著鏈傳遞直到有乙個物件處理它,我們在設計的時候也必須保證每乙個請求都能被處理。接受者和傳送者都沒有對方的明確資訊,而且鏈中的每個物件自己也不知道自己處於在鏈的哪個位置。我們只需要把鏈設定好,也就是對每個鏈的節點設定後後或者前節點來承接請求(當當前鏈節點不能處理請求時)。而且我們可以隨時增加或者修改該處理鏈的結構,增加了設計的靈活性。

下文的例子需要我們事先給每個具體的管理者設定他的上司是哪個類,也就是設定後繼者。我們需要在每個具體管理類處理請求時,做出判斷是否可以處理當前請求,如不能把請求遞交給後繼者處理。

#ifndef responsibility_h

#define responsibility_h

#include #includeusing namespace std;

class request

};class manager

manager(string st) :name(st){}

void setsuperior(manager * s) };

class commonmanager :public manager

else

if (superior != nullptr)

}};class majordomo :public manager

else

if (superior != nullptr)

}};class generalmanager :public manager

else

}};#endif

#include "responsibility.h"

int main()

設計模式(二十) 職責鏈模式

職責鏈模式,使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。1.如下 using system namespace chainofresponsibility using system namespace...

設計模式(二十)職責鏈模式

職責鏈模式 chain of responsbility 使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件啊連城一條鏈,並沿著這條鏈傳遞改請求,直到有乙個物件處理他為止 public abstract class handler 處理請求的抽象方法 public a...

設計模式筆記(二十) 職責鏈模式

職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。優點 當客戶提交乙個請求時,請求是沿鏈傳遞直到有乙個concretehandler物件負責處理它。...