## 命令模式 Command Pattern 命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象,同时支持可撤消的操作。 ### ### 要点 - 将一组行为抽象为对象,这个对象和其他对象一样可以被存储和传递,从而实现行为请求者与行为实现者之间的松耦合,这就是命令模式。 - 命令模式是回调机制的面向对象版本。 - 命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。 - 命令模式的优点有:对类间解耦、可扩展性强、易于命令的组合维护、易于与其他模式结合,而缺点是会导致类的膨胀。 - 命令模式有不少的细分种类,实际使用时应根据当前所需来找到合适的设计方式。 ### ### 使用场合 - 命令模式很适合实现诸如撤消,重做,回放,时间倒流之类的功能。 - 基于命令模式实现录像与回放等功能,也就是执行并解析一系列经过预录制的序列化后的各玩家操作的有序命令集合。 ### ### 引申与参考 - 最终你可能会得到很多不同的命令类。为了更容易实现这些类,定义一个具体的基类,包含一些能定义行为的高层方法,往往会有帮助。可以将命令的主体execute()转到子类沙箱中。 - 对象可以响应命令,或者将命令交给它的从属对象。 如果我们这样实现了,就完成了一个职责链模式。 - 对于等价的实例,可以用享元模式提高内存利用率。 - 命令模式的Unity版本实现: - 本节内容相关的英文原文: - 本节内容相关的中文翻译: