命令模式是指将一个请求封装为对象,从而使代码可用不同的请求对客户端进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。命令模式包含命令调用者、命令接受者以及若干命令实体类。客户端实例化命令并传入命令调用者,命令调用者通过命令实体间接调用命令接受者的方法。
使用命令模式抽象代码逻辑有以下好处:
下面代码是一个命令模式的实现例子。
Receiver.java
public class Receiver {
public void action() {
System.out.println("执行请求");
}
}
Command.java
public abstract class Command {
protected Receiver receiver;
public Command(Receiver receiver) {
this.receiver = receiver;
}
abstract public void execute();
}
ConcreteCommand.java
public class ConcreteCommand extends Command {
public ConcreteCommand(Receiver receiver) {
super(receiver);
}
@Override
public void execute() {
receiver.action();
}
}
Invoker.java
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
this.command.execute();
}
}
Main.java
public class Main {
public static void main(String[] args) {
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker();
invoker.setCommand(command);
invoker.executeCommand();
}
}