Command 模式C++ 代码
来源:互联网 发布:unity3d 渐变透明 编辑:程序博客网 时间:2024/06/05 20:04
#include <iostream>#include <string>#include <vector>using namespace std;class CommandBase{ public:virtual void run()=0; private:};class Command1:public CommandBase{ public:Command1(string strName):m_strName(strName){};void run(){ cout<<m_strName<<endl;}private:string m_strName;};class Command2:public CommandBase{ public:Command2(string strName):m_strName(strName){};void run(){ cout<<m_strName<<endl;}private:string m_strName;};class Command3:public CommandBase{ public:Command3(string strName):m_strName(strName){};void run(){ cout<<m_strName<<endl;}private:string m_strName;};class Exclude{ public: void add(CommandBase& Command) { m_vetorCommand.push_back(&Command);}void run(){ vector <CommandBase*>::iterator Itr = m_vetorCommand.begin();while(Itr != m_vetorCommand.end()){ (*Itr++)->run();}} private: vector <CommandBase*> m_vetorCommand; static Exclude m_cExclude; };int main(){ Command1 cCommand1("cmd1"); Command2 cCommand2("cmd2"); Command3 cCommand3("cmd3"); Exclude cExclude; cExclude.add(cCommand1); cExclude.add(cCommand2); cExclude.add(cCommand3); cExclude.run(); while(1);}