设计模式 --> 命令模式(C++实现)
2013-03-04 23:19
495 查看
/* 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 命令模式(Command)把请求封装成一个对象,使请求能够存储更多的信息拥有更多的能力。 命令模式把请求一个操作的对象与知道怎么操行一个操作的对象分开. */ #include <iostream> #include <vector> using namespace std; // 烤肉师傅 class RoastCook { public: void MakeMutton() { cout << "烤羊肉" << endl; } void MakeChickenWing() { cout << "烤鸡翅膀" << endl; } }; // 抽象命令类 class Command { public: Command(RoastCook* temp) { receiver = temp; } virtual void ExecuteCmd() = 0; protected: RoastCook* receiver; }; // 烤羊肉命令 class MakeMuttonCmd : public Command { public: MakeMuttonCmd(RoastCook* temp) : Command(temp) {} virtual void ExecuteCmd() { receiver->MakeMutton(); } }; // 烤鸡翅膀命令 class MakeChickenWingCmd : public Command { public: MakeChickenWingCmd(RoastCook* temp) : Command(temp) {} virtual void ExecuteCmd() { receiver->MakeChickenWing(); } }; // 服务员类 class Waiter { public: void SetCmd(Command* temp); // 通知执行 void Notify(); protected: vector<Command*> m_commandList; }; void Waiter::SetCmd(Command* temp) { m_commandList.push_back(temp); cout << "增加订单" << endl; } void Waiter::Notify() { vector<Command*>::iterator it; for (it=m_commandList.begin(); it!=m_commandList.end(); ++it) { (*it)->ExecuteCmd(); } } int main() { // 店里添加烤肉师傅、菜单、服务员等顾客 RoastCook* cook = new RoastCook(); Command* cmd1 = new MakeMuttonCmd(cook); Command* cmd2 = new MakeChickenWingCmd(cook); Waiter* girl = new Waiter(); // 点菜 girl->SetCmd(cmd1); girl->SetCmd(cmd2); // 服务员通知 girl->Notify(); return 0; }
相关文章推荐
- <C++ 实现设计模式> 观察者模式
- (Boolan)C++设计模式 <十二> ——命令模式(Command)和访问器(Visitor)
- <C++ 实现设计模式> 观察者模式
- Head First 设计模式 (九) 迭代器与组合模式(Iterator & Composite pattern) C++实现
- <C/C++ 版> 设计模式 学习之 工厂模式 <1>
- 设计模式之命令模式 及 c++ 实现
- <设计模式>系列汇总 By python and C++
- 设计模式之命令模式,C++实现
- <C/C++ 版> 设计模式 学习之 策略模式
- 最常用的设计模式---命令模式(C++实现)
- 设计模式C++实现十九:命令模式
- 设计模式C++实现(9)——命令模式
- 设计模式C++实现(19)——命令模式
- (Boolan)C++设计模式 <一> ——设计模式简介以及面向对象设计原则
- 我所理解的设计模式(C++实现)——命令模式(Command Pattern)
- C++设计模式--单一对象模式<Singleton>
- (Boolan)C++设计模式 <二> ——模版方法(Template Method)
- 设计模式 之 单例模式 (C++ 懒汉经典实现 & DCL实现 & 饿汉经典实现)
- 我所理解的设计模式(C++实现)——命令模式(Command Pattern)
- 设计模式---命令模式(C++实现)