命令模式(行为变化)
2017-03-21 15:18
288 查看
#include <iostream> #include <string> #include <list> //命令模式:命令模式把一个请求或者操作封装到一个对象中。 //命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。 //命令模式允许请求的一方和发送的一方独立开来, //使得请求的一方不必知道接收请求的一方的接口, //更不必知道请求是怎么被接收, //以及操作是否执行,何时被执行以及是怎么被执行的。 //系统支持命令的撤消。 using namespace std; class Barbecuer //接收者执行命令 { public: void bakeMutton() { cout << "烤羊肉串" << endl; } void bakeChickenWing() { cout << "烤鸡翅" << endl; } }; class Command //命令基类 { protected: Barbecuer *receiver;//类的包含 public: Command(Barbecuer *receiver)//命令接受 { this->receiver = receiver; } virtual void executeCommand() = 0; }; class BakeMuttonCommand :public Command //命令传送着 { public: BakeMuttonCommand(Barbecuer *receiver) :Command(receiver) {} void executeCommand() { receiver->bakeMutton(); } }; class BakeChikenWingCommand :public Command //命令传送着 { public: BakeChikenWingCommand(Barbecuer *receiver) :Command(receiver) {} void executeCommand() { receiver->bakeChickenWing(); } }; class Waiter //服务员 { private: Command *command; public: void setOrder(Command *command) { this->command = command; } void notify() { command->executeCommand(); } }; class Waiter2 //gei多个对象下达命令 { private: list<Command*> orders; public: void setOrder(Command *command) { orders.push_back(command); } void cancelOrder(Command *command) {} void notify() { list<Command*>::iterator iter = orders.begin(); while (iter != orders.end()) { (*iter)->executeCommand(); iter++; } } }; int main1232131231() { Barbecuer *boy = new Barbecuer(); Command *bm1 = new BakeMuttonCommand(boy); Command *bm2 = new BakeMuttonCommand(boy); Command *bc1 = new BakeChikenWingCommand(boy); Waiter2 *girl = new Waiter2(); girl->setOrder(bm1); girl->setOrder(bm2); girl->setOrder(bc1); girl->notify(); cin.get(); return 0; }
相关文章推荐
- Android 7.0行为变化—开发者应该关注的
- TERSUS画画一样开发软件 显示相关处理元件介绍-样式变化行为元件
- 命令模式(Command Action 事务模式 对象行为模式)
- Android_不同行为的Fragement的生命周期的变化
- 设计模式(15) 命令模式(简单入门 行为模式)
- Android 6.0(API级别23)包括各种系统变化和API的行为变化
- ios7新特性1-UI变化、UIKit动态行为支持与Text Kit新接口
- 用继承表达行为间的差异,并用字段表达状态上的变化
- ios7新特性1-UI变化、UIKit动态行为支持与Text Kit新接口
- Android 6.0(API级别23)包括各种系统变化和API的行为变化。
- 按行为付费:移动广告模式新一波变化
- 行为变化模式
- 【状态模式】——状态的变化引起行为的变化
- Akka(7): FSM:通过状态变化来转换运算行为
- Android 7.0行为变化—开发者应该关注的
- Akka(7): FSM:通过状态变化来转换运算行为
- (行为模式)COMMAND——命令模式
- 访问者模式(行为变化)
- 监测div内容的变化,并做出相应的行为
- Android 7.0行为变化—开发者应该关注的(官网同步翻译)