下面是一个简单的 C++ 实现命令模式的示例:

#include <iostream>
#include <string>
#include <vector>

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

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

public:
    ConcreteCommand(const std::string& message) : m_message(message) {}

    void execute() override {
        std::cout << 'Executing command: ' << m_message << std::endl;
    }
};

// 命令调用者
class Invoker {
private:
    std::vector<Command*> m_commands;

public:
    void addCommand(Command* command) {
        m_commands.push_back(command);
    }

    void executeCommands() {
        for (Command* command : m_commands) {
            command->execute();
        }
        m_commands.clear();
    }
};

int main() {
    // 创建命令对象
    Command* command1 = new ConcreteCommand('Command 1');
    Command* command2 = new ConcreteCommand('Command 2');

    // 创建命令调用者
    Invoker invoker;

    // 添加命令到调用者
    invoker.addCommand(command1);
    invoker.addCommand(command2);

    // 执行命令
    invoker.executeCommands();

    // 释放命令对象的内存
    delete command1;
    delete command2;

    return 0;
}

在上面的示例中,我们定义了一个Command接口,其中包含一个execute纯虚函数。然后我们创建了一个ConcreteCommand类,实现了Command接口,并在execute函数中输出一条消息。

接下来,我们创建了一个Invoker类作为命令的调用者,它包含一个addCommand函数用于添加命令,以及一个executeCommands函数用于执行所有命令并清空命令列表。

最后,在main函数中,我们创建了两个具体的命令对象,并将它们添加到调用者中,然后调用executeCommands函数来执行这些命令。

这就是一个简单的 C++ 实现命令模式的示例。希望对你有帮助!


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

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