GreensnoWorld
记录点滴,分享乐趣,一块凝固的时间
2013.命令模式
设计模式  2023年10月25日
#include <iostream>
using namespace std;

#define SAFE_DELETE(p) if(p){delete p; p=NULL;}

class Receiver
{
public:
	void Action()
	{
		cout << "Receiver->Action" << endl;
	}
};

class Command
{
public:
	virtual void Execute() = 0;
};

class ConcreteCommand: public Command
{
public:
	ConcreteCommand(Receiver *pReceiver): m_pReceiver(pReceiver){}
	void Execute()
	{
		m_pReceiver->Action();
	}
private:
	Receiver *m_pReceiver;
};

class Invoker
{
public:
	Invoker(Command *pCommand): m_pCommand(pCommand){}
	void Invoke()
	{
		m_pCommand->Execute();
	}
private:
	Command *m_pCommand;
};

int main()
{
	Receiver *pReceiver = new Receiver();
	Command *pCommand = new ConcreteCommand(pReceiver);
	Invoker *pInvoker = new Invoker(pCommand);
	pInvoker->Invoke();
	SAFE_DELETE(pInvoker);
	SAFE_DELETE(pCommand);
	SAFE_DELETE(pReceiver);
	return 0;
}

 

LIJG
余本顽劣,生于紫云下,长于汝水滨。早年求学,兴趣广泛,好高骛远,学无所成,仓皇入世。兴趣所致,投身互联网,求知未证,而立已至,始悟光阴荏苒,终需务实钻研。故有此站,记录时光,积累点滴,验证所学,分享愚见。指舞方寸间,心系万千年。
留言