命令模式
基本理解
- 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化;对请求队列或记录请求日志,以及支持客可撤离的操作。
- 苹果的Target-Action调用机制已经实现了命令模式。NSInvocation包含一个target对象,一个方法和一些参数。这个对象可以按需要动态修改。这是一个非常好的命令模式的例子。减少对象和接收对象之间的操作,直接写成一个请求或请求链。
命令模式的优点
- 它能够容易地设计一个命令队列
- 在需要的情况相爱,可以较容易地将命令记入日志
- 允许接受请求的一方决定是否否决请求
- 可以容易地实现对请求的撤销和重做
- 由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易
*命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分隔开。
何时使用命令模式
- 想让应用程序支持撤销与恢复
- 想用对象参数化一个动作以执行操作,并用不用的命令对象来代替回调函数
- 想要在不同时刻对请求进行制定、排列和执行
- 想记录修改日志,这样在系统故障时,这些修改可在原来重做一遍
- 想让系统支持事务,事务封装了对数据的一系列修改。事务可以建模为命令对象
在Cocoa Touch框架中使用命令模式
- NSInvocation
它是静态描绘的OC消息。 - NSUndoManager
备注
这个设计模式学习的不太深刻,所以就没有例子可介绍了,不过在网上看了一个例子,感兴趣的可以下载查看:
http://pan.baidu.com/s/1sdGsA