设计模式C++版:第十四式命令模式
来源:互联网 发布:网络诈骗案案例 编辑:程序博客网 时间:2024/05/17 03:28
命令模式:将一个请求封装为一个对象,从而使你可用不同请求。对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。优点就是把一个请求操作的对象,和一个知道怎么一个操作的对象分隔开,不再是紧耦合。敏捷开发原则,不要为代码添加基于猜测的,实际不需要的功能。这也是编程中很重要的一个原则——KISS原则。
#pragma once#include <stdio.h>#include <list>using std::list;//最终处理命令者class Barbecuer{public:void bakemutton(){printf("烤肉串\n");}void bakechickenwing(){printf("烤鸡翅\n");}};//命令类系class Command{public:Command(Barbecuer& cur){this->m_cur = cur;}virtual void excutecommand(){ }protected:Barbecuer m_cur;};class BakeChickenWingCommand :public Command{public:BakeChickenWingCommand(Barbecuer &cur) :Command(cur){}virtual void excutecommand(){m_cur.bakechickenwing();}};class BakeMuttonCommand :public Command{public:BakeMuttonCommand(Barbecuer &cur) :Command(cur){}virtual void excutecommand(){m_cur.bakemutton();}};//管理命令类class Waiter{public:void addcommand(Command * com){m_comlist.push_back(com);}void cancelcommand(Command* com){m_comlist.remove(com); //每个命令都不同,使用remove胜过erase.}//通知执行void notify(){for each (Command * var in m_comlist){var->excutecommand();}}private:list<Command*> m_comlist;};int main(){Barbecuer boy;Command * com1 = new BakeMuttonCommand(boy);Command * com2 = new BakeMuttonCommand(boy);Command * com3 = new BakeMuttonCommand(boy);Command *com4 = new BakeChickenWingCommand(boy);Waiter girl;girl.addcommand(com1);girl.addcommand(com2);girl.addcommand(com3);girl.addcommand(com4);girl.notify();printf("烤串太多,取消一个\n");girl.cancelcommand(com3);girl.notify();return 0;}
阅读全文
0 0
- 设计模式C++版:第十四式命令模式
- 设计模式C++版:第四式建造者模式
- C语言设计模式:命令模式 //tbd
- 设计模式之命令模式(c++)
- 设计模式 行为模式 命令模式 c语言 版本实现
- 设计模式---命令模式
- 设计模式-命令模式
- 设计模式:命令模式
- 设计模式:命令模式
- 设计模式:命令模式
- 设计模式 命令模式
- 设计模式--命令模式
- 设计模式---命令模式
- 设计模式- 命令模式
- 设计模式---命令模式
- 设计模式 - 命令模式
- 【设计模式】【命令模式】
- 设计模式---命令模式
- RxSwift样例七 SearchWikipedia
- Fragment内放置WebView,监听返回键,并逐级返回之前打开的网页
- JAVA集合知识点汇总
- JAVA调用C or C++的两种方式
- (lintcode)第2题尾部的零
- 设计模式C++版:第十四式命令模式
- linux下ACL权限
- 3—YOLO:训练自己的数据
- Android stroke 边框线 某一边
- 浅析Java中CountDownLatch用法
- 树分治
- 树状网络攻击(LCA和树上差分的应用)
- Mysql 字符串Split之存储过程实现
- 贪心-POJ 1700 过河问题