命令模式
将请求封装成对象,以便使用不同的请求来参数化其他对象。命令模式支持可撤销的操作。通过这种封装的方式将客户端和接收端解耦。
命令模式关系类图
- Command:抽象命令接口,声明执行的方法。
- ConcreteCommand:具体的命令对象,持有具体的接受者对象,完成具体的命令
- Receiver:接受者对象,真正执行命令的对象
- Invoker:传递命令对象,持有命令对象,要求命令对象执行请求
- Client:客户端对象,创建具体命令的对象
命令撤销
在发现某个请求并执行后,将命令执行状态保存。我们可以通过命令撤销的方式回到之前的状态。
优缺点
优点
- 实现客户端和接收端之间的解耦
- 便于动态添加新的命令
- doCommand方法可实现不同的功能
缺点
实现一个具体的命令系统可能会创建很多的具体命令对象。