Command模式通过将命令封装到一个对象当中,并且将接受请求对象(Receiver)的指针存放在ConcreteCommand对象当中,通过对象组合的方式进行解耦,当然命令的

发送还需要一个执行者Invoker,即命令分发对象。

#include"iostream"
using namespace std;
class Receiver
{
public:
Receiver(){;}
~Receiver(){;}
void Action()
{cout<<"Receiver::Action\n";}

};
class Command
{
public:
Command(Receiver* tmp)
{_rec=tmp;}
~Command()
{
if(_rec!=NULL)
delete _rec;
_rec=NULL;
}
void Excute()
{_rec->Action();}
private:
Receiver* _rec;
};
class Invoker
{
public:
Invoker(Command*tmp)
{_com=tmp;}
~Invoker()
{
if(_com!=NULL)
delete _com;
_com=NULL;
}
void Invoke()
{
_com->Excute();
}
private:
Command* _com;
};
int main(int argc,char* argv[])
{
Reciever* rev = new Reciever();
Command* cmd = new Command(rev);
Invoker* inv = new Invoker(cmd);
inv->Invoke();
return 0;
}

该模式其实也只是对象组合的实例化使用,通过不断的对象组合,进行对业务逻辑的模拟,设计模式究其实际而言不过是对象组合和对象继承的不断的实例化应用