責任鏈模式中,concretehandler將自己的後繼物件(向下傳遞資訊的物件)記錄在自己的後繼表中,當乙個請求到來時,concretehandler會先檢查看自己有沒有匹配的處理程式,如果有就自己處理,否則傳遞給它的後繼處理,concretehandler只是簡單的檢查看自己有沒有後繼,有的話將請求傳遞給後繼進行處理,沒有的話就自己處理。
#pragma once
class handle
;class concretehandlea :public handle
;class concretehandleb : public handle
;#include "responsibility.h"
#include
using namespace std;
handle::handle()
handle::handle(handle *psucc)
handle::~handle()
}void handle::setsuccessor(handle *psucc)
handle* handle::getsuccessor()
concretehandlea::concretehandlea()
concretehandlea::concretehandlea(handle *psucc) :handle(psucc)
void concretehandlea::handlerequest()
else
}concretehandlea::~concretehandlea()
concretehandleb::concretehandleb()
concretehandleb::concretehandleb(handle *psucc)
void concretehandleb::handlerequest()
else
}concretehandleb::~concretehandleb()
int main(int argc, char* ar**)
C 設計模式 責任鏈模式
優點 請求和處理分開 缺點 避免出現超長鏈的情況,一般的做法是在handler中設定乙個最大節點數量,在setnext方法中判斷是否已經是超過其閾值,超過則不允許該鏈建立,避免無意識地破壞系統效能 抽象處理者 ifndef handler h define handler h include req...
設計模式 責任鏈模式
定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...
設計模式 責任鏈模式
責任鏈可以使得系統在不影響客戶端的前提下動態的安排責任鏈和分配責任。責任鏈模式中包含的角色有抽象處理者,具體處理者以及請求的傳送者。責任鏈可以是一條直線,乙個環鏈甚至乙個樹結構。它使得每乙個具體的訊息處理者都有可能處理訊息。抽象的請求處理者 author wly public abstract cl...