command怎么编程

时间:2025-01-24 15:54:03 网络游戏

编程中的Command模式是一种行为设计模式,它封装了一个请求作为一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。下面是一个简单的Java示例,展示了如何使用Command模式:

定义命令接口

```java

public interface Command {

void execute();

void undo();

}

```

创建具体命令类

```java

public class LightOnCommand implements Command {

private Light light;

public LightOnCommand(Light light) {

this.light = light;

}

@Override

public void execute() {

light.on();

}

@Override

public void undo() {

light.off();

}

}

public class LightOffCommand implements Command {

private Light light;

public LightOffCommand(Light light) {

this.light = light;

}

@Override

public void execute() {

light.off();

}

@Override

public void undo() {

light.on();

}

}

```

创建接收者类

```java

public class RemoteControl {

private Command command;

public void setCommand(Command command) {

this.command = command;

}

public void pressButton() {

command.execute();

}

}

```

客户端代码

```java

public class Client {

public static void main(String[] args) {

Light light = new Light();

Command lightOn = new LightOnCommand(light);

Command lightOff = new LightOffCommand(light);

RemoteControl remote = new RemoteControl();

remote.setCommand(lightOn);

remote.pressButton(); // 执行开灯操作

remote.setCommand(lightOff);

remote.pressButton(); // 执行关灯操作

}

}

```

在这个例子中,`LightOnCommand` 和 `LightOffCommand` 是具体命令类,它们实现了 `Command` 接口。`RemoteControl` 类是接收者,它持有一个 `Command` 对象,并在 `pressButton` 方法中调用该命令的 `execute` 方法。客户端代码通过设置不同的命令对象来控制灯光的开和关。

这种设计模式使得请求的发送者和接收者解耦,使得请求的封装、排队、记录日志、撤销和恢复等操作更加灵活和可扩展。