每天一个设计模式: 责任链模式(Chain Of Responsibility)

来源:互联网 发布:知乎lols7淘汰赛 编辑:程序博客网 时间:2024/05/23 15:49
#ifndef HANDLER_H#define HANDLER_H#include <string>#include <iostream>class Handler{protected:Handler* m_handler;public:Handler(Handler* handler) :m_handler(handler){}virtual void HandlerMsg(int num){if (num == 0){std::cout << "Handler Pass" << std::endl;}else{if (m_handler)this->m_handler->HandlerMsg(num);}}};class HandlerLevel1: public Handler{public:HandlerLevel1(Handler* handler) :Handler(handler) {}virtual void HandlerMsg(int num){if (num <10){std::cout << "HandlerLevel1 Pass" << std::endl;}else{if (m_handler)this->m_handler->HandlerMsg(num);}}};class HandlerLevel2 : public Handler{public:HandlerLevel2(Handler* handler) :Handler(handler) {}virtual void HandlerMsg(int num){if (num < 100){std::cout << "HandlerLevel2 Pass" << std::endl;}else{if (m_handler)this->m_handler->HandlerMsg(num);}}};#endif 
// Chain.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "Handler.h"int _tmain(int argc, _TCHAR* argv[]){Handler* handler_level_2 = new HandlerLevel2(NULL);Handler* handler_level_1 = new HandlerLevel1(handler_level_2);Handler *handler = new Handler(handler_level_1);handler->HandlerMsg(50);getchar();delete handler; delete handler_level_1; delete handler_level_2;return 0;}


0 0