在Java中,命令模式是一种行为设计模式,它允许将请求封装成一个对象,从而使得可以参数化其他对象对请求进行调用、队列化请求、或者记录请求日志,同时支持可撤销的操作。
下面是一个简单的示例代码,展示了如何使用命令模式:
java
// 定义命令接口
interface Command {
void execute();
}
// 具体命令类,实现了命令接口
class LightOnCommand implements Command {
private Light light;
public LightOnCommand(Light light) {
this.light = light;
}
public void execute() {
light.turnOn();
}
}
// 接收者类,真正执行命令的对象
class Light {
public void turnOn() {
System.out.println("灯已打开");
}
public void turnOff() {
System.out.println("灯已关闭");
}
}
// 命令的调用者,负责执行命令
class RemoteControl {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void pressButton() {
command.execute();
}
}
public class Main {
public static void main(String[] args) {
// 创建接收者对象
Light light = new Light();
// 创建具体命令对象,将接收者对象传入
Command lightOnCommand = new LightOnCommand(light);
// 创建命令的调用者对象
RemoteControl remoteControl = new RemoteControl();
// 设置命令
remoteControl.setCommand(lightOnCommand);
// 调用命令
remoteControl.pressButton();
}
}
在这个示例中,命令模式将"打开灯"的操作封装成了一个命令对象LightOnCommand,并且通过RemoteControl来执行这个命令。这样做的好处是,如果有其他命令,比如"关闭灯"的操作,只需要创建相应的命令对象并设置给RemoteControl即可,而不需要直接修改RemoteControl的代码。