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;
}
可以使接受者和发送者之间松耦合。开源软件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;
}
相关文章推荐
- 23种设计模式--责任链模式-Chain of Responsibility Pattern
- JAVA设计模式-Chain of Responsibility
- 设计模式笔记18:职责链模式(Chain of Responsibility Pattern)
- [php]php设计模式 Chain Of Responsibility (职责链模式)
- 设计模式职责链模式(ChainofResponsibilityPattern)
- 设计模式6--责任链模式(The chain of responsibility pattern)
- 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)
- 设计模式笔记(8 CHAIN OF RESPONSIBILITY & COMMAND)
- 极速理解设计模式系列:12.责任链模式(Chain of Responsibility Pattern)
- 设计模式之13 - 责任链模式Chain Of Responsibility
- JAVA设计模式之 职责链模式【Chain of Responsibility Pattern】
- 设计模式学习—责任链模式(Chain of Responsibility Design Pattern)
- 设计模式入门之职责链模式Chain Of Responsibility
- JAVA设计模式十一:--Chain of Responsibility(职责链模式)
- 设计模式笔记18:职责链模式(Chain of Responsibility Pattern)
- 深入浅出设计模式——职责链模式(Chain of Responsibility Pattern)
- 设计模式(17)-Chain of Responsibility Pattern
- C#设计模式之二十职责链模式(Chain of Responsibility Pattern)【行为型】
- 设计模式笔记(8 CHAIN OF RESPONSIBILITY & COMMAND)