设计模式一日一练:命令模式(Command)
来源:互联网 发布:墨子号 知乎 编辑:程序博客网 时间:2024/05/02 01:14
Command模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
// commandclass Command { public: virtual void Execute();};// commandclass Receiver;class ConcreteCommand: public Command { public: public ConcreteCommand(Receiver* receiver); virtual void Execute(); private: Receiver* receiver;};ConcreteCommand::ConcreteCommand(Receiver* receiver) { this->receiver = receiver;}void ConcreteCommand::Execute() { this->receiver->Action();}// receiverclass Receiver { public: void Action();}// class Invoker { public: void SetCommand(Command* cmd); void ExecuteCommand(); private: Command* command;}void Invoker::SetCommand(Command* cmd) { this->command = cmd;}void Invoker::ExecuteCommand() { this-command->Execute();}// testvoid Test() { Receiver* receiver = new Receiver(); Command* command = new ConcreteCommand(receiver); Invoker* invoker = new Invoker(); invoker->SetCommand(command); invoker->ExecuteCommand(); // todo ... destroy}
PS. 腾讯引擎技术中心的一位技术牛人写过一篇用命令模式封装多线程调用的blog,命令模式的典型应用场景。
PS. 我的设计模式系列blog,《设计模式》专栏,通过简单的示例演示设计模式,对于初学者很容易理解入门。深入学习请看GoF的《设计模式》。
11 0
- 设计模式一日一练:命令模式(Command)
- 设计模式一日一练:单件模式(Singleton)
- 设计模式一日一练:策略模式(Strategy)
- 设计模式一日一练:工厂模式(Factory)
- 设计模式一日一练:适配器模式(Adapter)
- 设计模式一日一练:装饰者模式(Decorator)
- 设计模式一日一练:观察者模式(Observer)
- 设计模式一日一练:代理模式(Proxy)
- 设计模式一日一练:生成器模式(Builder)
- 设计模式一日一练:组合模式(Composite)
- 设计模式一日一练:外观模式(Facade)
- 设计模式一日一练:桥接模式(Bridge)
- 设计模式一日一练:原型模式(Prototype)
- 设计模式一日一练:亨元模式(Flyweight)
- 设计模式一日一练:状态模式(State)
- 设计模式一日一练:中介者模式(Mediator)
- 设计模式一日一练:模板方法(Template Method)
- 设计模式一日一练:抽象工厂模式(Abstract Factory)
- jQuery实现图片延迟加载
- Android常用代码之APK root权限静默安装
- 串行 并行 同步 异步
- 《黑马程序员》 动态代理之Aop框架的实现
- Oracle 安装常见问题
- 设计模式一日一练:命令模式(Command)
- 西游记中景点
- QT移动无边框窗口
- Serializable 作用
- D3D中的渲染状态简介
- select函数
- 互联网的优势是创出来的
- Android SD卡 路径问题以及如何获取SDCard 内存
- 软件开发二三事