C++中的命令模式(Command Pattern)是一種行為設計模式,它允許你將一個請求封裝為一個對象,從而使你可以使用不同的請求把客戶端參數化,對請求排隊或者記錄請求日志,以及支持可撤銷的操作。
命令模式簡化調用的主要方式是通過以下步驟:
class Command {
public:
virtual ~Command() {}
virtual void execute() = 0;
};
class LightOnCommand : public Command {
private:
Light* light;
public:
LightOnCommand(Light* light) : light(light) {}
void execute() override {
light->on();
}
};
execute
方法。class RemoteControl {
private:
Command* command;
public:
RemoteControl(Command* command) : command(command) {}
void setCommand(Command* command) {
delete this->command;
this->command = command;
}
void pressButton() {
command->execute();
}
};
int main() {
Light light;
Command* lightOnCommand = new LightOnCommand(&light);
RemoteControl remoteControl(lightOnCommand);
remoteControl.pressButton(); // 輸出 "Light is ON"
delete lightOnCommand;
return 0;
}
通過這種方式,命令模式將請求的發送者和接收者解耦,使得調用更加靈活和可擴展。你可以輕松地添加新的命令類來執行不同的操作,而不需要修改現有的代碼。此外,命令模式還支持撤銷操作,只需在具體命令類中添加一個 undo
方法即可。