设计模式之命令行模式(Command)
来源:互联网 发布:淘宝店铺出租合同 编辑:程序博客网 时间:2024/06/05 05:56
优点:
1、容易设计出一个命令队列
2、可以设计出请求的撤销与重做
作用:
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作
#include <iostream>using namespace std;#include <vector>//用来声明执行操作的接口class Command{public: virtual void execute1() = 0; virtual void execute2() = 0; virtual ~Command() = 0{}protected: Command(){}};//知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者class Receiver{public: Receiver(){} ~Receiver(){} void action1() { cout << "Receiver::action1" << endl; } void action2() { cout << "Receiver::action2" << endl; }};//将一个接收者对象绑定于一个操作,调用接收者相应的操作,以实现executeclass ConcreteCommand : public Command{public: ConcreteCommand(Receiver *receiver) { _receiver = receiver; } ~ConcreteCommand(){} virtual void execute1() { _receiver->action1(); } virtual void execute2() { _receiver->action2(); }private: Receiver *_receiver;};//要求该命令执行这个请求class Invoker{public: Invoker(Command *command) { _cmd = command; } ~Invoker(){} void Invoke1() { _cmd->execute1(); } void Invoke2() { _cmd->execute2(); }private: Command *_cmd;};int main(){ //具体执行(处理) Receiver *receiver = new Receiver; //具体命令(请求) Command *cmd = new ConcreteCommand(receiver); //调用命令(激活请求) Invoker *inv = new Invoker(cmd); //调用命令1(激活请求1) inv->Invoke1(); //调用命令2(激活请求2) inv->Invoke2(); system("Pause"); return 0;}
阅读全文
0 0
- 设计模式之(Command)命令行模式
- 设计模式之命令行模式(Command)
- 设计模式之Command
- 设计模式之Command
- 设计模式之Command
- 设计模式之Command
- 设计模式之Command
- 设计模式之Command
- 设计模式之 Command
- 设计模式之Command
- 设计模式之Command
- 设计模式之Command
- 设计模式之Command
- 设计模式之 command
- 设计模式之 command
- 设计模式之Command
- 设计模式之--Command
- 设计模式之Command
- Python学习笔记:内置方法
- IHS Petra v3.1.8.3.rar Reflexw v5.0.rar
- 文字横向滚动的TextView
- SQL server 2008表的创立
- 创建文件
- 设计模式之命令行模式(Command)
- 数组相关知识总结
- 设置vc++6.0 sdk的方法
- 3.1 运算符与表达式
- windows下Fiddler4抓取iPhone中app的https请求
- opencv_tutorial_code学习——Mat创建方法
- python 基础学习
- MySQL5.7 添加用户、删除用户与授权
- HTML的练习之网上书城静态页面的实现