命令模式使用场景:
- 命令模式作为“回调(callback)”在面向对象系统中的替代。回调就是先将一个函数登记上,然后在以后调用此函数。
- 在不同的时间指定请求,让请求排队。
一个命令对象和原先的请求发出者可有不同的生命周期。也就是说原先的请求发出者/对象可能已经不存在(对象回收了 ),而命令对象本身仍然是活动的。这时命令的接收者可以是在本地,也可以在网络的另外一个地址。即命令对象序列化后传送到另外一台机器上。
3.支持撤销
命令对象可先存储起来,等到客户端/发号命令者需要撤销命令所产生的效果时,可先调用undo()方法,把命令所产生的效果撤销。命令对象还可以提供redo()方法,以供客户端在需要时再重新实施命令效果。
4. 数据恢复
如果要将系统中所有的数据更新到日志里,以便在系统崩溃时,可根据日志读回所有的数据更新命令,重新调用execute()方法一条一条执行这些命令,从而恢复系统在崩溃前所做的数据更新。