Java命令设计模式
定义
命令设计模式是一种行为设计模式,它将请求封装为一个对象,从而使你可以使用不同的请求对客户端进行参数化。
对应角色
- 调用者(Invoker):发出请求的对象。
- 命令(Command):执行请求的对象。
- 接收者(Receiver):知道如何实施与执行一个请求相关的操作。
优缺点
优点
- 降低系统的耦合度,新的命令可以很容易地加入到系统中。
- 可以比较容易地设计一个命令队列和宏命令。
- 可以方便地实现对请求的Undo和Redo。
缺点
- 使用命令模式可能会导致某些系统有过多的具体命令类。
- 过度使用命令模式可能会造成具体命令类大幅增长,从而提升系统的复杂度与维护难度。
应用场景
- 需要将请求调用者和请求接收者解耦的场景。
- 需要在不同的时间指定请求、将请求排队和执行请求的场景。
- 需要支持命令的撤销(Undo)操作和恢复(Redo)操作的场景。
- 需要支持命令的排队(Queue)操作的场景。
实例
// 命令接口
interface Command {void execute();
}// 具体命令类
class ConcreteCommand implements Command {private Receiver receiver;ConcreteCommand(Receiver receiver) {this.receiver = receiver;}@Overridepublic void execute() {receiver.action();}
}// 接收者类
class Receiver {void action() {System.out.println("执行请求!");}
}// 请求者类
class Invoker {private Command command;void setCommand(Command command) {this.command = command;}void executeCommand() {command.execute();}
}// 客户端代码
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();}
}