行为模式5-命令模式

行为模式5-命令模式

命令模式(Command)

意图

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

问题思考

Office的打开,保存,关闭。

适用性

  • 在不同的时刻指定、排列和执行请求。
  • 支持取消操作
  • 支持修改日志
  • 用构建在原语1操作上的高层操作构造一个系统。例如SQL事务。

效果

  • Command模式调用操作的对象与指导如何实现该操作的对象解耦。
  • Command是头等的对象。它们可像其他的对象一样被操纵和扩展。
  • 可以将多个命令组合成一个符合命令。
  • 增加新的Command很容易,因为这无需改变已有的类。

类图

command

实现

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

class ConcreteCommand : public Command {
public:
    explicit ConcreteCommand(Receiver *receiver) {
        mReceiver = receiver;
    }

    void Execute() override {
        mReceiver->Action();
    }

private:
    Receiver *mReceiver = nullptr;

};

class Receiver {
public:
    void Action() {
        std::cout << "Receiver in action" << std::endl;
    }
};

1.原语:是由若干条指令组成的,用于完成一定功能的一个过程。

你可能感兴趣的:(行为模式5-命令模式)