设计模式-命令模式
应用场景:
1. 当一个应用程序调用者与多个目标对象之间存在调用关系时,并且目标对象之间的操作很类似的时候。
2. 例如当一个目标对象内部的方法调用太复杂,或者内部的方法需要协作才能完成对象的某个特点操作时。
3. 有时候调用者调用目标对象后,需要回调一些方法。
职责定义:
1. Invoker:调用者对象。
2. ICommand:用于解耦目标对象与调用者之间的抽象命令对象。
要点:
1. 对请求部分进行封装,封装使用的是: ICommand。
2. 调用者:Invoker把ICommand作为参数加入自身,调用Execute()执行具体请求。
优劣势描述:
1. 能较容易地建立一个命令队列
2. 在需要的情况下,可以较容易地将命令记入日志
3. 允许接收请求的一方是否拒绝请求
4. 可以容易地实现对请求的撤销和重做
总结:
将请求进行封装,可以在封装的内部做一些其他扩展,例如增加日志、对调用顺序记录。类似于AOP,命令模式在程序中经常被使用,比如委托就是使用命令模式的一种体现。
代码:下载