1命令模式: 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也可支持撤销的操作。
命令对象通过在特定接收者上绑定一组动作来封装一个请求。要达到这点,命令对象将动作和接收者包进对象中。这个对象只暴露出一个 execute() 方法,当此方法被调用的时候,接收者就会进行这些动作。
2 命令模式的更多用途
2.1 队列请求:所有命令都实现了公共的 Commond 命令,可以将命令放到队列中。一个一个取出后执行其 execute 方法。
3 特性:
- 命令模式将发出请求的对象和执行请求的对象解耦
- 在被解耦的两者之间通过命令对象进行沟通。命令对象封装了接收者和一个相关动作。
- 调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用。
- 调用者可以接受命令当做参数,甚至在运行时动态进行。
- 命令可以支持撤销,实现一个undo方法将状态回到执行 execute 方法之前的状态。连续撤销可以通过一个堆栈保存已执行过的命令。