CHAIN OF RESPONSIBILITY 책임 연쇄 패턴

  • 메세지를 보내는 객체와 메세지를 받아 처리하는 객체들 간의 결합도를 없애줌.
  • 하나의 요청에 대한 처리를 여러 객체에게 전달함.
  • 자식으로부터 부모로



#include <iostream> using namespace std; class Handler{ public: Handler(Handler* s) : _successor(s) {} virtual void HandleRequset(int i){ if(_successor != NULL) _successor->HandleRequset(i); else cout << "Handler" << endl; } private: Handler* _successor; }; class ConcreteHandler1 : public Handler{ public: ConcreteHandler1(Handler* ptrs) : Handler(ptrs) {} void HandleRequset(int i) override{ if(i == 1) cout<< "Handler 1" <<endl; else Handler::HandleRequset(i); } }; class ConcreteHandler2: public Handler{ public: ConcreteHandler2(Handler* ptrs) : Handler(ptrs) {} void HandleRequset(int i) override{ if(i == 2) cout<< "Handler 2" <<endl; else Handler::HandleRequset(i); } }; int main(){ Handler* prtHandler = new ConcreteHandler1(new ConcreteHandler2(NULL)); prtHandler->HandleRequset(1); prtHandler->HandleRequset(2); prtHandler->HandleRequset(3); return 0; }

+ Recent posts