用于将命令的请求者和命令的执行者解耦。
public class ToyCar {
public void Forward() {
System.out.println("forward");
}
public void Back() {
System.out.println("back");
}
}
public interface Command {
void execute();
}
public class ForwardCommand implements Command {
private ToyCar toyCar;
public ForwardCommand(ToyCar toyCar) {
this.toyCar = toyCar;
}
@Override
public void execute() {
toyCar.Forward();
}
}
public class BackCommand implements Command {
private ToyCar toyCar;
public BackCommand(ToyCar toyCar) {
this.toyCar = toyCar;
}
@Override
public void execute() {
toyCar.Back();
}
}
public class Controller {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
command.execute();
}
}
@Test
public void commandTest() {
ToyCar toyCar = new ToyCar();
Command forwardCommand = new ForwardCommand(toyCar);
Command backCommand = new BackCommand(toyCar);
Controller controller = new Controller();
controller.setCommand(forwardCommand);
controller.executeCommand();
controller.setCommand(backCommand);
controller.executeCommand();
}