#include <iostream>
#include <string>
#include <list>
using namespace std;
/************************************************************************/
/* 命令模式,将一个请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化;
/* 对请求排队和记录请求日志, 以及支持可撤销的操作。
/************************************************************************/
class Receiver {
public:
virtual void Action()
{
cout << "action";
}
};
class Command {
public:
Command (Receiver* pReceiver)
{
m_pReceiver = pReceiver;
}
virtual void ExecuteCommand()
{
m_pReceiver->Action();
}
private:
Receiver *m_pReceiver;
};
class Invoker {
public:
void SetCommand(Command *pCommand)
{
m_pCommand = pCommand;
}
void Notify()
{
m_pCommand->ExecuteCommand();
}
private:
Command *m_pCommand;
};
int main(int argc, char** argv)
{
Receiver *pRec = new Receiver();
Command *pCom = new Command(pRec);
Invoker *pInvoker = new Invoker();
pInvoker->SetCommand(pCom);
pInvoker->Notify();
getchar();
return 0;
}
command model
最新推荐文章于 2024-03-18 09:42:28 发布