设计模式-命令模式

来源:互联网 发布:web优化 编辑:程序博客网 时间:2024/06/08 01:53


应用场景:

1.         当一个应用程序调用者与多个目标对象之间存在调用关系时,并且目标对象之间的操作很类似的时候。

2.         例如当一个目标对象内部的方法调用太复杂,或者内部的方法需要协作才能完成对象的某个特点操作时。

3.         有时候调用者调用目标对象后,需要回调一些方法。

职责定义:

1.         Invoker:调用者对象。

2.         ICommand:用于解耦目标对象与调用者之间的抽象命令对象。

要点:

1.         对请求部分进行封装,封装使用的是: ICommand。

2.         调用者:Invoker把ICommand作为参数加入自身,调用Execute()执行具体请求。

优劣势描述:

1.         能较容易地建立一个命令队列

2.         在需要的情况下,可以较容易地将命令记入日志

3.         允许接收请求的一方是否拒绝请求

4.         可以容易地实现对请求的撤销和重做

总结:

         将请求进行封装,可以在封装的内部做一些其他扩展,例如增加日志、对调用顺序记录。类似于AOP,命令模式在程序中经常被使用,比如委托就是使用命令模式的一种体现。

0 0