设计模式C++描述----05.职责链(Chain of Responsibility)模式 (二)

2014-11-24 12:03:52 · 作者: · 浏览: 1
leC: public Handle
{
public:
void HandleRequest(int request)
{
if (request >= 1000 && request < 2000)
{
cout << "ConcreteHandleC deal with: " << request < }
else if (this->GetSuccessor() != NULL)
{
this->GetSuccessor()->HandleRequest(request);
}
else
{
cout << "Can't deal with " << request << endl;
}
}
};

//////////////////////////////////////////////////////////////////////////
//测试
int main()
{
Handle* h1 = new ConcreteHandleA();
Handle* h2 = new ConcreteHandleB();
Handle* h3 = new ConcreteHandleC();

//设置其上级
h1->SetSuccessor(h2);
h2->SetSuccessor(h3);

h1->HandleRequest(300);
h1->HandleRequest(600);
h1->HandleRequest(1500);
h1->HandleRequest(3000);

delete h1;
delete h2;
delete h3;

return 0;
}
三. 说明

1. 职责链的特点是:当客户提交一个请求时,请求是沿链传递直至有一个ConcreteHandler对象负责处理它。


2. 职责链的好处是:请求者不用管哪个对象来处理,反正该请求会被处理。它只需保持一个后继者即可。

3. 要注意的是:一个请求到链的最后可能也没有处理,所以一定要配置得当。

作者 lwbeyond