一、模式定义
命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。命令模式也支持可撤销的操作。此模式允许我们将命令对象随心所欲地存储,传递和调用。
二、所体现出的设计原则
解除请求的发出者和请求执行者之间的耦合
三、UML图示
四、应用场景
1. 需要将调用动作抽象成对象,并作为参数传递。 面向过程编程中,用函数指针传递函数地址;面向对象编程中,可以把命令对象当成参数传递,就像回调函数一样。
2. 需要在不用的时刻指定,排列,执行请求;也就是说请求的调用和请求的执行要异步。
3. 需要支持取消操作,这得益于Invoker中请求队列的设计。
4. 支持日志和事物处理,同样得益于Invoker的请求队列的设计。
五、注意事项
暂无
六、举例说明
比如所stuct中的Action类的设计,设计者可以继承这个类,设计具体的Action(就像是Receiver);RequestProcessor则负责调用命令,就像Invoker. 不知道这里说错了没有... >_<
七、代码示例
维基百科:http://zh.wikipedia.org/wiki/%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F