Design Pattern Command 命令设计模式
来源:互联网 发布:ubuntu 日志 编辑:程序博客网 时间:2024/06/06 05:08
本设计模式就是利用不同的类包起不同的命令,达到使用什么命令就实现什么操作。
也可以进一步利用map和自己喜欢的命令词对接起来。
一个执行类实际上已经包含了所有需要的操作了,如:
class SuperMaker{public:string makeCar(){return "Car";}string makePlane(){return "Plane";}};
这里有两个命令,下面要做的就是使用不同的类把需要的命令包含起来。
class Command{protected:SuperMaker *sm;public:virtual void exeCmd() = 0;};class MakeCarCmd : public Command{public:MakeCarCmd(SuperMaker *s){sm = s;}void exeCmd(){cout<<sm->makeCar()<<std::endl;}};class MakePlaneCmd : public Command{public:MakePlaneCmd(SuperMaker *s){sm = s;}void exeCmd(){cout<<sm->makePlane()<<std::endl;}};
这里的MakeCarCmd和MakePlaneCmd这两个类分别实现不同的命令。使用不同的类就能实现不同的操作。
具体要如何实现怎么使用这些类(命令),那么可以自己定义,如可以使用map和有意义的字符串对应起来,也可以使用一个类包这些命令再次包含起来等操作。
全部代码:
#include <iostream>#include <string>using std::string;using std::cout;class SuperMaker{public:string makeCar(){return "Car";}string makePlane(){return "Plane";}};class Command{protected:SuperMaker *sm;public:virtual void exeCmd() = 0;};class MakeCarCmd : public Command{public:MakeCarCmd(SuperMaker *s){sm = s;}void exeCmd(){cout<<sm->makeCar()<<std::endl;}};class MakePlaneCmd : public Command{public:MakePlaneCmd(SuperMaker *s){sm = s;}void exeCmd(){cout<<sm->makePlane()<<std::endl;}};int main(){SuperMaker suMa;MakeCarCmd mcc(&suMa);Command *cmdCar = &mcc;MakePlaneCmd mpc(&suMa);Command *cmdPlane = &mpc;cmdCar->exeCmd();cmdPlane->exeCmd();return 0;}
运行:
1 0
- Design Pattern Command 命令设计模式
- Java设计模式 Design Pattern:命令模式 Command Pattern
- 8.2.2 命令设计模式(The command design pattern)
- 命令设计模式(Command Pattern)
- Design Pattern(Command模式)
- 设计模式 - Command Pattern(命令模式)
- 设计模式 - Command Pattern(命令模式)
- 设计模式之命令模式(Command Pattern)
- 设计模式14 - 命令模式 Command Pattern
- c++设计模式:命令模式(Command Pattern)
- 设计模式 - 命令模式(command pattern) 详解
- 设计模式 - 命令模式(command pattern) 详解
- 设计模式心得:命令模式 (command pattern)
- 设计模式-命令模式(command pattern)
- 设计模式之命令模式(Command Pattern)
- 设计模式之命令模式---Command Pattern
- Java设计模式--命令模式【Command Pattern】
- 设计模式【命令模式Command Pattern】
- cocos2d-x UI之技能冷却按钮
- UVa11459 - Snakes and Ladders(飞行棋类的游戏)
- cocos2d-x 事件分发机制 ——触摸事件监听
- 读《大数据》涂子沛著
- 45度斜角地图菱形坐标转换
- Design Pattern Command 命令设计模式
- Threejs 官网 - 如何运行本地的东西(How to run things locally)
- 辛星跟大伙谈论下学习性个人博客的生死存亡
- Threejs 官网 - Three.js 的图形用户界面工具(GUI Tools with Three.js)
- 1036 非洲小孩
- 013:搭建log4j日志环境,显示DDL语句(主要是把log4j和slf4j结合到一起)
- 某趟旅途
- 从IBM的计划中分析出中国又一次相当然的错误选择吗
- 如何写出一个较好的快速排序程序