设计模式(18) - Command命令模式
来源:互联网 发布:淘宝怎么打印发货清单 编辑:程序博客网 时间:2024/06/05 12:08
1. 意图
将一个请求封装成为一个对象,因而使得我们可以,用不同的请求来参数化其它的对象,将请求插入队列或记录请求日志,以及支持可撤销的操作。
2. UML类图
3. 代码实现
#include<iostream>using namespace std;//命令接口class Command{public:virtual void execute() = 0;};//接收者class AutoDoor{public:void open() {cout << "AutoDoor is opening" << endl;}void close() {cout << "AutoDoor is closing" << endl;}};//执行开门的命令类class OpenCommand : public Command{public:explicit OpenCommand(AutoDoor *door) : _door(door) {}void execute() {_door->open();}private:AutoDoor *_door;};//执行关门的命令类class CloseCommand : public Command{public:explicit CloseCommand(AutoDoor *door) : _door(door) {}void execute() {_door->close();}private:AutoDoor *_door;};//保存具体的命令对象class RemoteControl{public:void setCommand(Command *cmd) {_cmd = cmd;}void buttonPressed() {_cmd->execute();}private:Command *_cmd;};//客户int main(){//接收者AutoDoor *door = new AutoDoor;// 具体的命令对象OpenCommand *opencmd = new OpenCommand(door);CloseCommand *closecmd = new CloseCommand(door);//触发者对象RemoteControl *ctrl = new RemoteControl;ctrl->setCommand(opencmd);ctrl->buttonPressed();ctrl->setCommand(closecmd);ctrl->buttonPressed();delete door, opencmd, closecmd, ctrl;return 0;}运行结果为:
AutoDoor is opening
AutoDoor is closing
0 0
- 设计模式(18)-命令模式(Command)
- 设计模式(18) - Command命令模式
- 设计模式(18)-命令模式(Command)
- Command(命令)设计模式
- 设计模式----Command(命令)模式
- 设计模式--命令模式(Command)
- [设计模式]Command命令模式
- [设计模式]命令模式(Command)
- 设计模式--命令模式Command
- 设计模式: 命令(command)模式
- 设计模式:命令模式-command
- 设计模式之Command(命令)
- 设计模式学习-Command(命令)
- 设计模式:Command(命令)
- 命令设计模式(Command Pattern)
- java设计模式18——命令模式(Command)
- JAVA设计模式(18) —<行为型>命令模式(Command)
- 设计模式(16)-命令模式(Command)
- 设计模式(14) - State状态模式
- 设计模式(15) - Observer观察者模式
- 十五章
- 设计模式(16) - Mementor备忘录模式
- 设计模式(17) - Mediator中介者模式
- 设计模式(18) - Command命令模式
- adb shell出错“error: unknown host service”
- 设计模式(19) - Visitor访问者模式
- VB 中 FSO 对象模型介绍
- 设计模式(20) - Chain of Responsibility职责链模式
- 设计模式(21) - Iterator迭代器模式
- Android ActivityManager isUserAMonkey() 方法探究 与 monkey 测试
- Eclipse切换工作空间(switch workspace)及项目导入导出问题
- 设计模式(22) - Interpreter解释器模式