命令模式
命令模式是指将一个请求封装为对象,从而使代码可用不同的请求对客户端进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。命令模式包含命令调用者、命令接受者以及若干命令实体类。客户端实例化命令并传入命令调用者,命令调用者通过命令实体间接调用命令接受者的方法。
命令模式的优势
使用命令模式抽象代码逻辑有以下好处:
- 命令模式能够容易的设计命令队列
- 在需要的情况下能够方便的将命令记入日志
- 接受请求的一方否决命令很容易实现
- 便于对命令撤销和重做
- 命令和执行者解耦,添加命令十分容易
命令模式示例代码
下面代码是一个命令模式的实现例子。
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();
}
}
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。