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; }
通过这种方式,你可以灵活地使用命令模式来处理不同的请求,同时保持代码的可扩展性和可维护性。