设计模式-命令模式
2014-12-04 14:02
246 查看
应用场景:
1. 当一个应用程序调用者与多个目标对象之间存在调用关系时,并且目标对象之间的操作很类似的时候。
2. 例如当一个目标对象内部的方法调用太复杂,或者内部的方法需要协作才能完成对象的某个特点操作时。
3. 有时候调用者调用目标对象后,需要回调一些方法。
职责定义:
1. Invoker:调用者对象。
2. ICommand:用于解耦目标对象与调用者之间的抽象命令对象。
要点:
1. 对请求部分进行封装,封装使用的是: ICommand。
2. 调用者:Invoker把ICommand作为参数加入自身,调用Execute()执行具体请求。
优劣势描述:
1. 能较容易地建立一个命令队列
2. 在需要的情况下,可以较容易地将命令记入日志
3. 允许接收请求的一方是否拒绝请求
4. 可以容易地实现对请求的撤销和重做
总结:
将请求进行封装,可以在封装的内部做一些其他扩展,例如增加日志、对调用顺序记录。类似于AOP,命令模式在程序中经常被使用,比如委托就是使用命令模式的一种体现。
应用场景:
1. 当一个应用程序调用者与多个目标对象之间存在调用关系时,并且目标对象之间的操作很类似的时候。
2. 例如当一个目标对象内部的方法调用太复杂,或者内部的方法需要协作才能完成对象的某个特点操作时。
3. 有时候调用者调用目标对象后,需要回调一些方法。
职责定义:
1. Invoker:调用者对象。
2. ICommand:用于解耦目标对象与调用者之间的抽象命令对象。
要点:
1. 对请求部分进行封装,封装使用的是: ICommand。
2. 调用者:Invoker把ICommand作为参数加入自身,调用Execute()执行具体请求。
优劣势描述:
1. 能较容易地建立一个命令队列
2. 在需要的情况下,可以较容易地将命令记入日志
3. 允许接收请求的一方是否拒绝请求
4. 可以容易地实现对请求的撤销和重做
总结:
将请求进行封装,可以在封装的内部做一些其他扩展,例如增加日志、对调用顺序记录。类似于AOP,命令模式在程序中经常被使用,比如委托就是使用命令模式的一种体现。
相关文章推荐
- .NET中的设计模式四:命令模式 选择自 lane_cn 的 Blog
- C++实现网络服务器命令模式(设计及模板实现)
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
- 设计模式学习日志(15)-Command命令(行为型模式) (引用)
- .NET设计模式-命令模式(Command Pattern)
- java设计模式之Command(菜单命令)
- 设计模式(18)-命令模式(Command)
- 设计模式学习笔记(十七)——Command命令模式
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
- java设计模式之Command(菜单命令)
- 设计模式之命令(Command)---对象行为型模式
- 设计模式(16)-命令模式(Command)
- C#设计模式之命令模式
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
- 设计模式----Command(命令)模式
- Java实用设计模式:Command(命令模式)
- 设计模式在二维图形程序里的应用(命令模式--command)
- 设计模式之Command命令模式
- 设计模式学习笔记(十六)——Command命令
- 设计模式学习(十二)职责链模式-命令模式-解释器模式