以下是用 C++ 实现命令模式的示例代码:

#include <iostream>
#include <vector>

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

// 具体命令类
class ConcreteCommand1 : public Command {
public:
    virtual void execute() {
        std::cout << '执行具体命令1' << std::endl;
    }
};

// 具体命令类
class ConcreteCommand2 : public Command {
public:
    virtual void execute() {
        std::cout << '执行具体命令2' << std::endl;
    }
};

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

public:
    void setCommand(Command* cmd) {
        command = cmd;
    }

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

int main() {
    Invoker invoker;

    ConcreteCommand1 cmd1;
    invoker.setCommand(&cmd1);
    invoker.executeCommand();

    ConcreteCommand2 cmd2;
    invoker.setCommand(&cmd2);
    invoker.executeCommand();

    return 0;
}

在上述代码中,Command 是一个命令接口,定义了 execute() 方法,具体的命令类 ConcreteCommand1ConcreteCommand2 实现了 Command 接口的 execute() 方法。Invoker 是命令调用者,通过 setCommand() 方法设置具体的命令对象,并通过 executeCommand() 方法执行命令。

main() 函数中,我们创建了一个 Invoker 对象 invoker,然后分别创建了 ConcreteCommand1ConcreteCommand2 对象,并通过 setCommand() 方法将具体的命令对象设置到 invoker 中,最后通过 executeCommand() 方法执行命令。

运行上述代码,输出结果为:

执行具体命令1
执行具体命令2

这说明命令模式成功地将命令对象与命令的执行解耦,并且可以通过命令调用者来执行具体的命令。


原文地址: https://www.cveoy.top/t/topic/o2YT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录