命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
电器插板开关命令例子。
类图:
有的时候如果不想每次调用都判断对象是否为null,可以实现一个空对象(空对象本身也被视为一种设计模式)。
命令模式可以增加undo方法,撤销操作(命令可能需要记录一些之前的状态)。多次撤销,用堆栈记录操作过程中的每一个命令。
宏命令MacroCommand组装其他命令,而不只是执行一个命令(party模式)。
命令模式的用途:队列请求。工作队列是命令对象集合,工作线程取出对象调用execute方法,一旦完成再去处理下一个新的命令对象。
命令模式用途:日志请求。