命令模式(Command Pattern)是一種行為設計模式,它允許你將一個請求封裝為一個對象,從而使你可以使用不同的請求、隊列或日志請求參數化其他對象。此外,它還支持可撤銷的操作。在Java中,命令模式通常涉及以下幾個角色:
下面是一個簡單的Java命令模式的例子:
// 命令接口
interface Command {
void execute();
}
// 接收者
class LightOnCommand implements Command {
Light light;
public LightOnCommand(Light light) {
this.light = light;
}
@Override
public void execute() {
light.on();
}
}
// 調用者
class RemoteControl {
Command command;
public void setCommand(Command command) {
this.command = command;
}
public void pressButton() {
command.execute();
}
}
// 具體命令
class Light {
public void on() {
System.out.println("Light is ON");
}
public void off() {
System.out.println("Light is OFF");
}
}
// 客戶端
public class Client {
public static void main(String[] args) {
Light light = new Light();
Command lightOnCommand = new LightOnCommand(light);
RemoteControl remoteControl = new RemoteControl();
remoteControl.setCommand(lightOnCommand);
remoteControl.pressButton();
}
}
在這個例子中,我們有一個Light
類,它有兩個方法:on()
和off()
。我們創建了一個LightOnCommand
類,它實現了Command
接口,并在其execute()
方法中調用了Light
類的on()
方法。RemoteControl
類作為調用者,它有一個Command
類型的成員變量,可以通過setCommand()
方法設置具體命令,并通過pressButton()
方法執行命令。
在客戶端代碼中,我們創建了一個Light
對象和一個LightOnCommand
對象,然后將LightOnCommand
對象設置為RemoteControl
對象的命令,最后調用RemoteControl
對象的pressButton()
方法來打開燈。