命令模式
来源:互联网 发布:易语言调用js脚本 编辑:程序博客网 时间:2024/06/05 12:39
简介
命令模式:
将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销操作。
类图
组成对象
Receiver接受者角色,就是干活的码农,命令传递打这里就应该被执行。
Command命令角色,对命令额封装,所有命令声明在此
Invoker调用者角色,接受到命令并且执行命令
常用的场景
只要认为是命令的地方,eg GUI开发,按钮,DOS命令模拟,触发反馈机制的处理等
优点:
1.类间解耦
2.可扩展性
3.结合其他模式更加优秀:结合责任链模式实现命令族解析任务;结合模板方法,减少Command子类的膨胀
缺点:
1. 命令越多,类约膨胀,需要慎用。
测试代码
#include <iostream>#include <assert.h>#include <vector>using namespace std;#include <string>#include <list>class FBaseReciever{public:virtual void dosomething() = 0;};class FFirstReviever : public FBaseReciever{public:void dosomething(){};};class FBaseCommand{private:FBaseReciever* m_pReciever;public:FBaseCommand(FBaseReciever* receiver){m_pReciever = receiver;};FBaseCommand(){};~FBaseCommand(){};virtual void execute() = 0;};class FConcretaCommand : public FBaseCommand{public:void execute(){};};class FInvoker{public:void setCommand(FBaseCommand* command){m_pCommand = command;};void executeCommand(){assert(m_pCommand);m_pCommand->execute();};private:FBaseCommand* m_pCommand;};void main(){FConcretaCommand* pComand = new FConcretaCommand();FInvoker oInvoker;oInvoker.setCommand(pComand);oInvoker.executeCommand();delete pComand;}
阅读全文
0 0
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 华为路由器nat
- react的基础搭建
- 双11黑科技,阿里百万级服务器自动化运维系统StarAgent揭秘
- 如何使用Vegas进行调音?
- Codeforces Round #449 (Div. 1) C. Willem, Chtholly and Seniorious
- 命令模式
- 那些年我们用过的Java单例模式
- HBase的权限管理(namespace)
- DWR实现服务器向客户端推送消息(可用于大屏消息墙等)JAVA
- aspeed BMC AST2500处理器ESPI驱动分析
- kaggle-Porto Seguro's Safe Driver Prediction
- 嵌入式软硬件模块化开发和工具性总结
- ioTize-获得embed award的简单玩意,没看出有啥意义
- 重写equal 的同时为什么必须重写hashcode