#include <iostream>
using namespace std;
class handle
{
public:
handle():_suc(NULL){}
virtual ~handle(){}
void set_successor(handle *suc)
{
_suc = suc;
}
handle *get_successor()
{
return _suc;
}
virtual void handle_request(int i){}
protected:
handle *_suc;
};
class concrete_handleA : public handle
{
public:
void handle_request(int i)
{
if (i >=0 && i < 10)
cout << "concrete_handleA::handle_request() : num = "<<i<<endl;
else if (_suc != NULL)
_suc->handle_request(i);
}
};
class concrete_handleB : public handle
{
public:
void handle_request(int i)
{
if (i >= 10 && i < 20)
cout << "concrete_handleB::handle_request() : num = "<<i<<endl;
else if (_suc != NULL)
_suc->handle_request(i);
}
};
class concrete_handleC : public handle
{
public:
void handle_request(int i)
{
if (i >= 20 && i < 30)
cout << "concrete_handleC::handle_request() : num = "<<i<<endl;
else if (_suc != NULL)
_suc->handle_request(i);
}
};
int main()
{
handle *a = new concrete_handleA;
handle *b = new concrete_handleB;
handle *c = new concrete_handleC;
a->set_successor(b);
b->set_successor(c);
int arr[] = {12,50,6,4,23,15,8,20,14};
for (int i = 0; i < sizeof(arr)/sizeof(int); ++i)
a->handle_request(arr[i]);
delete a;delete b;delete c;
return 0;
}
chain_of_responsibility责任链模式
最新推荐文章于 2025-04-24 00:17:57 发布
本文通过C++实现的责任链设计模式示例,展示了如何处理不同范围内的整数请求。具体而言,通过创建Handle基类及三个派生类Concrete_HandleA、Concrete_HandleB和Concrete_HandleC来分别处理0-9、10-19和20-29之间的数值。通过设置处理者的继承关系,可以有效地将请求传递给能够处理该请求的对象。

2366

被折叠的 条评论
为什么被折叠?



