15.命令模式
命令模式是一个高内聚的模式,其定义为:Encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable operations.将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
命令模式的优点
- 类间解耦
- 可扩展性
- 命令模式结合其他模式会更优秀:命令模式可以结合责任链模式,实现命令族解析任务;结合模板方法模式,则可以减少Command子类的膨胀问题
命令模式的缺点:
- Command子类的膨胀问题
命令的撤销:
有两种方式可以解决:一是结合备忘录模式还原最后状态,该方法适合接收者为状态的变更情况,而不适合事件处理;而是通过增加一个新的命令,实现事件的回滚。