命令模式(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()方法来打开灯。