您的位置:首页 > 大数据 > 人工智能

Chain of Responsibility设计模式

2009-07-23 10:35 387 查看
让每个对象都有处理请求的机会,事先不知道应该让哪个对象来处理该请求。
可以使接受者和发送者之间松耦合。开源软件open diameter采用了这种模式
来处理请求。

#include <stdio.h>

class Handler
{
public:
virtual void handleRequest(int type) = 0;
};

#define HANDLER(T , TYPE) /
class T:public Handler /
{ /
public: /
T(Handler * successor):m_successor(successor) /
{} /
/
void handleRequest(int type) /
{ /
if (type == TYPE) /
{ /
printf("Got the request, [%d]/n" , type); /
} /
else if (m_successor) /
{ /
m_successor->handleRequest(type); /
} /
else /
{ /
printf("Can not get the handler./n"); /
} /
} /
/
private: /
Handler * m_successor; /
};

HANDLER(GetHandler , 1)
HANDLER(SetHandler , 2)
HANDLER(UpdateHandler , 3)

int main(int argc , char ** argv)
{
SetHandler setHandler(0);
GetHandler getHandler(&setHandler);
UpdateHandler updateHandler(&getHandler);
Handler * beginer = &updateHandler;

beginer->handleRequest(1);
beginer->handleRequest(2);
beginer->handleRequest(3);
beginer->handleRequest(4);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: