職責鏈模式(Chain of Responsibility)使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關係。將這個對象連成一條鏈,並沿着這條鏈傳遞該請求,知道有一個對象處理它爲止。
//Handler.h
#ifndef _HANDLER_H_
#define _HANDLER_H_
#include <iostream>
using namespace std;
class Handler
{
protected:
Handler* _successor;
public:
Handler()
{
_successor = 0;
}
void SetSuccessor(Handler* hd)
{
_successor = hd;
}
virtual void HandlRequest()=0;
};
class ConcreteHandler1:public Handler
{
public:
void HandlRequest()
{
if (_successor)
//main.cpp
#include "Handler.h"
int main()
{
Handler* hd = new ConcreteHandler1();
hd->SetSuccessor(new ConcreteHandler2());
hd->HandlRequest();
return 0;
}
//main.cpp
#include "Handler.h"
int main()
{
Handler* hd = new ConcreteHandler1();
hd->SetSuccessor(new ConcreteHandler2());
hd->HandlRequest();
return 0;
}