职责链模式(Chain of Responsibility)使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。
//Handler.h #ifndef _HANDLER_H_ #define _HANDLER_H_ #include <iostream> using namespace std; class Handler { protected: Handler* _successor; public: Handler() { _successor = 0; } void SetSuccessor(Handler* hd) { _successor = hd; } virtual void HandlRequest()=0; }; class ConcreteHandler1:public Handler { public: void HandlRequest() { if (_successor)
//main.cpp #include "Handler.h" int main() { Handler* hd = new ConcreteHandler1(); hd->SetSuccessor(new ConcreteHandler2()); hd->HandlRequest(); return 0; }
//main.cpp #include "Handler.h" int main() { Handler* hd = new ConcreteHandler1(); hd->SetSuccessor(new ConcreteHandler2()); hd->HandlRequest(); return 0; }