设计模式之命令模式(Command)
2016-04-14 10:19
615 查看
#pragma once #include <string> #include <list> #include <map> //暴露接口层 class Command { public: virtual ~Command(void); virtual bool execute() = 0; protected: Command(); }; //简单命令类,便于不同对象的创建 template<class Receiver> class SimpleCommand : public Command { public: typedef bool (Receiver::* Action)(); SimpleCommand(Receiver* _t, Action _action): t_(_t), action_(_action) { } virtual bool execute() { return (t_->*action_)(); } //模板函数要暴露在声明处 private: Action action_; Receiver* t_; }; //特殊命令类,用于管理一组命令 class MacroCommand : public Command { public: MacroCommand(); virtual ~MacroCommand(); virtual void add(const std::string& id, Command* cmd); virtual void remove(const std::string& id); virtual bool execute(); private: typedef std::map<std::string, Command*> CmdList; CmdList cmdlist_; }; //自定义的一个可以执行命令的类 class MyCmd { public: bool Action(); };
相关文章推荐
- 2.2 Android进程间通信(IPC)----Service Manager
- NavigationBar 下面的横线是怎么来的? 如何去除?
- 实现HorizontalScrollView随ViewPager滚动的简易方法
- Android开发之Fragment与Activity的数据交互通过回调机制实现
- Android动画
- Android屏幕适配全攻略(最权威的官方适配指导)
- iOS开发 GET、POST请求方法(NSURLConnection篇)
- Python中*args 和**kwargs的用法
- 2. Add Two Numbers(Java)
- 混合编程的实践与思考
- 欢迎使用CSDN-markdown编辑器
- VS2008的程序,运行时遇到R6034错误:
- Java基础学习(一)—方法
- java 深入浅出工厂模式
- Web前端开发笔试&面试_02(others)
- ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小
- IOS Application详解
- the number of position
- 不花软妹币就可以出国了!
- 当RxJava遇上Retrofit