C++命令模式的概念在这里就不赘述了,网上一搜全是,上代码。
#include <list>
#include <iostream>
class CCmdBase
{
public:
CCmdBase(){}
virtual ~CCmdBase(){}
virtual void work() = 0;
};
class CCmdControl
{
public:
void AddCmd(CCmdBase *pCmd)
{
__m_listCmd.push_back(pCmd);
}
void DeleteCmd(CCmdBase *pCmd)
{
__m_listCmd.remove(pCmd);
}
void work()
{
auto iter = __m_listCmd.begin();
for (; iter != __m_listCmd.end(); ++iter)
{
(*iter)->work();
}
}
private:
std::list<CCmdBase*> __m_listCmd;
};
class Cmd_test1 : public CCmdBase
{
public:
void work()
{
std::cout << "执行测试命令1" << std::endl;
}
};
class Cmd_test2 : public CCmdBase
{
public:
void work()
{
std::cout << "执行测试命令2" << std::endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
CCmdControl cmdControl;
Cmd_test1 * test1 = new Cmd_test1;
Cmd_test2 * test2 = new Cmd_test2;
cmdControl.AddCmd(test1);
cmdControl.AddCmd(test2);
cmdControl.work();
return 0;
}
上述代码运行结果: