主要解决
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它定义了请求的处理者对象之间的关系,并使多个处理者有机会处理该请求。当发出一个请求时,请求将沿着链条一直传递,直到链上的某一个处理者决定请求的处理方式。
关键代码
#include<iostream>
using namespace std;
//定义抽象类Handler
class Handler
{
protected:
Handler* successor; // 定义后继对象
public:
Handler() {
successor = NULL;
}
void SetSuccessor(Handler* suc) {
successor = suc;
}
virtual void HandleRequest() = 0; // 处理请求的抽象方法
};
//实现抽象类Handler
class ConcreteHandler1 : public Handler
{
public:
void HandleRequest() {
if (successor != NULL) {
cout << "ConcreteHandler1 放过请求" << endl;
successor->HandleRequest();
}
else
{
cout << "ConcreteHandler1 处理请求"<<endl;
}
}
};
class ConcreteHandler2 : public Handler
{
public:
void HandleRequest() {
if (successor != NULL) {
cout << "ConcreteHandler2 放过请求" << endl;
successor->HandleRequest();
}
else
{
cout << "ConcreteHandler2 处理请求"<<endl;
}
}
};
//Client四
int main(int argc, char* argv[])
{
ConcreteHandler1* handler1 = new ConcreteHandler1();
ConcreteHandler2* handler2 = new ConcreteHandler2();
handler1->SetSuccessor(handler2);
handler1->HandleRequest();
return 0;
}
参考
https://www.jb51.net/article/274574.htm#_label8