命令模式定义

将“请求”封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。也支持撤销操作。

meta command pattern 可以创建命令的宏,一次可以执行多个命令。

问:接受者一定有必要存在吗,为何命令对象不直接实现execute()方法的细节?
答:一般来说,我们尽量设计“傻瓜”命令对象,它只懂得调用一个接受者的一个行为。然而,一个“聪明”命令对象会实现很多逻辑,直接完成一个请求,但是调用者与接受者之间的解耦程度比较差。

应用

队列请求

一个工作队列,在某一端添加命令,另一端是线程,线程的动作:从队列中取出一个命令,调用它的excute方法,等待这个调用完成,就将此命令对象丢弃,再取下一个命令。

web服务器如何应用这样的队列方式

日志请求

  1. 某些应用需要将所有的动作记录在日志中,在系统死机后,重新调用这些动作恢复到之前的状态。<br />命令模式实现这一点:新增两个方法store/load

事务系统

  1. 一整群操作必须全部进行完成,或没有进行任何操作。