每天一个设计模式: 责任链模式(Chain Of Responsibility)
2016-01-13 17:33
681 查看
#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; }
相关文章推荐
- 【pymongo】连接认证 auth failed解决方法
- JAR export finished with warnings. See details for additional information
- ALOHA simulaiton仿真结果及分析
- [Machine Learning]朴素贝叶斯(NaiveBayes)
- Codeforces Educational Codeforces Round 5 E. Sum of Remainders 数学
- 2015人工智能重大突破
- Mina 中遇到SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"
- Educational Codeforces Round 5 E. Sum of Remainders(数学)
- Could not find a storyboard named 'Main' in bundle NSBundle
- Educational Codeforces Round 5 E. Sum of Remainders 数论
- find . -name file -exec echo abc > {} \; fail
- 台电(Teclast)X98 Air Ⅱ 双系统版 初体验
- JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)异常
- rails 数据验证
- openssh无法登录:server responded "algorithm negotiation failed”
- https://webmail.*.org/ecp
- 安装调试时出现Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER问题
- hdu1021——Fibonacci Again
- ibaits 中 $ 与 # 及 remapResults的用法
- Failed to list versions for ...