首页 > 代码库 > Design Pattern Command 命令设计模式
Design Pattern Command 命令设计模式
本设计模式就是利用不同的类包起不同的命令,达到使用什么命令就实现什么操作。
也可以进一步利用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; }
运行:
Design Pattern Command 命令设计模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。