标签:
默默地EEer,原文地址:
http://www.cnblogs.com/hebaichuanyeah/p/5625233.html
职责链模式指使多个对象多有机会处理请求,避免请求发送者和接受者的耦合关系。
将这些接受处理的对象连成一条链,并沿着该链处理请求。
一个传说中的应用情景:
假如去政府部门办事,遇到了打字员小丽,在打LOL的小张以及主任老李,互相踢皮球推脱。
#include <iostream>
using namespace std;
class Handler
{
protected:
string name;
Handler * successor;
public:
Handler(){}
virtual ~Handler(){}
void setSuccessor(Handler * successor)
{
this->successor = successor;
}
string getName()
{
return name;
}
virtual void HandleRequest(string str)
{
}
};
//传说中的政府部分踢球皮球人员
class FootballPlayer : public Handler
{
public:
FootballPlayer(string name)
{
this->name = name;
}
virtual void HandleRequest(string str)
{
if(name == str)
{
cout<<this->name<<": 办理事务.."<<endl;
}
else if(successor != NULL)
{
cout<<this->name<<": 这个不归我管,你去找"<<successor->getName()<<endl;
successor->HandleRequest(str);
}
else
{
cout<<this->name<<": 这个办不了啦"<<endl;
}
}
};
main()
{
Handler * xiaoli = new FootballPlayer("打字员小丽");
Handler * xiaozhang = new FootballPlayer("在打lol的小张");
Handler * laoli = new FootballPlayer("主任老李");
//小丽把皮球踢给小张
xiaoli->setSuccessor(xiaozhang);
xiaozhang->setSuccessor(laoli);
laoli->setSuccessor(NULL);
xiaoli->HandleRequest("办个事");
}

[设计模式]<6>. C++与职责链模式(chain of rsponsibility pattern)
标签:
原文地址:http://www.cnblogs.com/hebaichuanyeah/p/5625233.html