C++ 命令模式实现示例及代码解析
以下是用 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() 方法,具体的命令类 ConcreteCommand1 和 ConcreteCommand2 实现了 Command 接口的 execute() 方法。Invoker 是命令调用者,通过 setCommand() 方法设置具体的命令对象,并通过 executeCommand() 方法执行命令。
在 main() 函数中,我们创建了一个 Invoker 对象 invoker,然后分别创建了 ConcreteCommand1 和 ConcreteCommand2 对象,并通过 setCommand() 方法将具体的命令对象设置到 invoker 中,最后通过 executeCommand() 方法执行命令。
运行上述代码,输出结果为:
执行具体命令1
执行具体命令2
这说明命令模式成功地将命令对象与命令的执行解耦,并且可以通过命令调用者来执行具体的命令。
原文地址: https://www.cveoy.top/t/topic/o2YT 著作权归作者所有。请勿转载和采集!