命令模式
来源:互联网 发布:淘宝网注册流程图 编辑:程序博客网 时间:2024/05/24 01:49
#include <iostream>#include <vector>using namespace std;class Receiver{public:void execute(){cout << "彳亍向大家问好" << endl;}};class Command{public:Command() {}Command(Receiver* pobjReceiver) : m_pobjReceiver(pobjReceiver) {}void setReciever(Receiver* pobjReceiver){m_pobjReceiver = pobjReceiver;}virtual void execute() = 0;protected:Receiver* m_pobjReceiver;};class ConcreteCommand : public Command{public:ConcreteCommand() {}ConcreteCommand(Receiver* pobjReceiver) : Command(pobjReceiver) {}virtual void execute(){m_pobjReceiver->execute();cout << "时间" << endl;}};class Invoker{public:void addCommand(Command* pobjCommand){if (pobjCommand){m_vecCommand.push_back(pobjCommand);}}void removeCommand(Command* pobjCommand){for (auto it = m_vecCommand.begin(); it != m_vecCommand.end(); ++it){if (*it == pobjCommand){m_vecCommand.erase(it);}}}void execute(){for (auto& it : m_vecCommand){if (it){it->execute();}}}protected:vector<Command*> m_vecCommand;};int main(){Receiver* pobjReceiver = new Receiver();Command* pobjCommand = new ConcreteCommand(pobjReceiver);Invoker* pobjInvoker = new Invoker();pobjInvoker->addCommand(pobjCommand);pobjInvoker->execute();return 0;}
总结:
1.容易设计成命令队列来进行操作
2.可以对命令进行日志记录
3.接收请求方可以拒绝需要拒绝的命令
4.可以实现撤销和重做
5.增加新新命令非常容易
6.请求操作与执行操作分离
0 0
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 求某年某月的天数
- python 上安装redis客户端
- 第三次CCF计算机软件能力认证考试题解(Java)--201412--Z字形扫描--100分通过
- JSP与servlet之间的传值方式
- 重载overload和重写overried的区别
- 命令模式
- 极客学院视频分享
- C语言小编程之九九乘法表
- 代码注入
- 反转链表
- ubuntu 搭建svn
- Mat矩阵如何获取元素
- Caffe学习笔记(OCR字符识别)
- python 爬小说+beautifulsoup安装