Design Pattern Command 命令设计模式
2015-08-24 10:07
731 查看
这种设计模式是使用不同类的包裹不同的命令,达到什么样的命令执行什么操作。
有可能进一步利用map您最喜欢的对接命令字。
正在运行的类实际上已经包含了操作的所有需求,例如:
这里有两个命令。以下要做的就是使用不同的类把须要的命令包括起来。
这里的MakeCarCmd和MakePlaneCmd这两个类分别实现不同的命令。使用不同的类就能实现不同的操作。
详细要怎样实现怎么使用这些类(命令)。那么能够自定义。如能够使用map和有意义的字符串相应起来。也能够使用一个类包这些命令再次包括起来等操作。
所有代码:
执行:
有可能进一步利用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;
}
执行:
相关文章推荐
- quartz 关联多个JobDetail和SimpleTrigger多任务调度
- ORA-01788: 此查询块中要求 CONNECT BY 子句
- jquery性能优化高级技巧
- javascript实现支持移动设备画廊
- Unity3D游戏开发之详解 Animation类和Animator类
- android-如何关闭AlertDialog.Builder对话框
- HDOJ--1097--A hard puzzle
- linux 创建NFS服务
- 【Material Design视觉设计语言】应用布局设计
- codeforces 401D D. Roman and Numbers(状态压缩dp+数论)
- High-Speed Tracking with Kernelized Correlation Filters
- Codeforces Round #246 (Div. 2)
- 对抗赛 解题报告
- 详解C语言中的错误报告errno与其相关应用方法
- 黑马程序员----Java中的IO流学习笔记2
- bbs---之spring mvc
- 自定义EditText实现未输入文字动画提醒效果
- 抽象类(Abstract)和接口的不同点、共同点(Interface)。
- friend(hdoj 1719)
- ps 图片处理技法 怎样使照片看起来更加清晰