[设计模式]<7>. C++与命令模式(command pattern)

默默地EEer,原文地址:

 http://www.cnblogs.com/hebaichuanyeah/p/5713031.html

意图
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。

一个栗子

#include <iostream>

using namespace std;

class Receiver
{
public :
    void doSomeThing()
    {
        cout<<"执行命令"<<endl;
    }
};

class Command
{
public:
    virtual ~Command(){}
    virtual void execute()
    {


    }

};

class ADemoCommand:public Command
{
private:
    Receiver * receiver;
public:
    ADemoCommand(Receiver * r)
    {
        receiver = r;

    }
    virtual void execute()
    {
        receiver->doSomeThing();
    }

};

class Invoker
{
private:
    Command * command;
public:
    Invoker(Command *c)
    {
        command=c;
    }
    void sendCommand()
    {
        command->execute();
    }
};
main()
{
    Receiver * receiver = new Receiver();
    Command * command = new ADemoCommand(receiver);
    Invoker * invoker = new Invoker(command);
    invoker->sendCommand();
    delete receiver;
    delete command;
    delete invoker;
}
原文地址:https://www.cnblogs.com/hebaichuanyeah/p/5713031.html