C++中的命令模式(Command Pattern)是一种行为设计模式,它允许你将请求封装为一个对象,从而使你可以使用不同的请求、队列或日志请求,并支持可撤销的操作。以下是如何在C++中灵活运用命令模式的建议:
class Command {
public:
virtual ~Command() {}
virtual void execute() = 0;
};
class LightOnCommand : public Command {
public:
LightOnCommand(Light* light) : light_(light) {}
void execute() override {
if (light_) {
light_->on();
}
}
private:
Light* light_;
};
class Light {
public:
void on() {
// 灯泡打开的逻辑
}
void off() {
// 灯泡关闭的逻辑
}
};
class RemoteControl {
public:
void setCommand(Command* command) {
command_ = command;
}
void pressButton() {
if (command_) {
command_->execute();
}
}
private:
Command* command_;
};
int main() {
Light light;
Command* lightOnCommand = new LightOnCommand(&light);
Command* lightOffCommand = new LightOffCommand(&light);
RemoteControl remoteControl;
remoteControl.setCommand(lightOnCommand);
remoteControl.pressButton(); // 打开灯泡
remoteControl.setCommand(lightOffCommand);
remoteControl.pressButton(); // 关闭灯泡
delete lightOnCommand;
delete lightOffCommand;
return 0;
}
通过这种方式,你可以灵活地使用命令模式来处理不同的请求,同时保持代码的可扩展性和可维护性。