C++命令模式

命令模式

命令模式是一种行为设计模式,将请求封装成对象,以便在不同的请求发送者和接收者之间进行参数化传递。通过将请求封装成对象,可以将请求的发送者和接收者解耦,同时支持请求的排队、记录、撤销等操作。

使用场景:

1、当需要将请求发送者和请求接收者解耦,并支持请求的排队、记录、撤销等操作时,可以使用命令模式。
2、当希望支持对请求进行参数化配置时,可以使用命令模式。
3、当需要支持撤销操作或事务回滚时,可以使用命令模式。

优势:

1、解耦请求发送者和接收者,使得请求发送者不需要知道请求的具体处理对象。
2、支持对请求进行排队、记录、撤销等操作。
3、可以方便地扩展新的命令,符合开闭原则。

劣势:

1、可能会导致系统中命令类的数量增多。
2、可能会增加系统的复杂性。

Code

#include <iostream>
#include <string>

// 命令接口
class Command {
public:
    virtual void execute() = 0;
};

// 具体命令类
class ConcreteCommand : public Command {
private:
    std::string receiver;

public:
    ConcreteCommand(const std::string& receiver) : receiver(receiver) {}

    void execute() override {
        std::cout << "Command executed by " << receiver << std::endl;
    }
};

// 命令接收者
class Receiver {
public:
    void action() {
        std::cout << "Receiver performs action" << std::endl;
    }
};

// 命令调用者
class Invoker {
private:
    Command* command;

public:
    void setCommand(Command* command) {
        this->command = command;
    }

    void executeCommand() {
        command->execute();
    }
};

int main() {
    Receiver receiver;
    ConcreteCommand command("ReceiverA");
    command.execute();

    Invoker invoker;
    invoker.setCommand(&command);
    invoker.executeCommand();

    while (1);
    return 0;
}

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值