📅  最后修改于: 2023-12-03 15:23:00.314000             🧑  作者: Mango
命令模式是一种行为设计模式,它可以将请求转换为一个包含请求的对象,从而使您可以根据需要将请求排队,记录请求历史记录,将请求动态地配置和执行操作。
命令模式包含以下组件:
Command是一个接口,它定义了一个名为execute的方法。该方法无需参数并在执行后产生某种效果。execute方法通常包括一个对接收方的调用。
public interface Command {
void execute();
}
ConcreteCommand实现了Command接口,它包含了要执行的操作和其接收方。它将用户命令与命令的执行者分离。
public class ConcreteCommand implements Command {
private final Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void execute() {
receiver.doSomething();
}
}
Receiver是执行实际操作的对象。它包含了实际执行操作的方法。
public class Receiver {
public void doSomething() {
// 实现操作的代码
}
}
Invoker是调用命令的对象。它传递一个命令对象并调用其execute方法。
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
command.execute();
}
}
Client是命令模式的使用者。它负责创建ConcreteCommand对象并将其传递给Invoker。
public class Client {
public static void main(String[] args) {
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker();
invoker.setCommand(command);
invoker.executeCommand();
}
}
命令模式是一个非常有用的模式,它将命令和命令的执行者分离,使代码更具可维护性和可扩展性。它还允许您轻松地实现撤消或重做操作。虽然该模式可能会增加代码的复杂性,但它已在许多业务场景中得到了广泛应用,并被证明是一种出色的设计模式。