1.Chain of Responsibility模式:将可能处理一个请求的对象链接成一个链,并将请求在这个链上传递,直到有对象处理该请求(可能需要提供一个默认处理所有请求的类,例如MFC中的CwinApp类)。
2.Chain of Responsibility Pattern 结构图
3.实现
1 #ifndef _HANDLE_H_ 2 #define _HANDLE_H_ 3 4 class Handle 5 { 6 public: 7 virtual ~Handle(); 8 virtual void HandleRequest() = 0; 9 void SetSuccessor(Handle* succ); 10 Handle* GetSuccessor(); 11 12 protected: 13 Handle(); 14 Handle(Handle* succ); 15 16 private: 17 Handle* _succ; 18 }; 19 20 class ConcreteHandleA:public Handle 21 { 22 public: 23 ConcreteHandleA(); 24 ~ConcreteHandleA(); 25 ConcreteHandleA(Handle* succ); 26 void HandleRequest(); 27 28 protected: 29 private: 30 }; 31 32 class ConcreteHandleB:public Handle 33 { 34 public: 35 ConcreteHandleB(); 36 ~ConcreteHandleB(); 37 ConcreteHandleB(Handle* succ); 38 void HandleRequest(); 39 protected: 40 private: 41 }; 42 43 #endif