1.要点
- 命令模式将请求封装成对象,这可以让你使用不同的请求,队列,或者日志请求来参数化其他对象。命令模式也支持撤销操作。
- 命令模式将发出请求的对象和执行请求的对象解耦。
- 在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个(组)动作。
- 调用者通过调用命令对象的
execute()
发出请求,这会使得接收者的动作被调用。 - 调用者可以接受命令当做参数,甚至在运行时动态地进行。
- 命令可以支持撤销,做法是实现一个
undo()
方法来回到execute()
被执行前的状态。 - 宏命令是命令的一种简单的延伸,允许调用多个命令。宏方法也支持撤销。
2.案例
遥控器
给这个遥控器设计代码,要求:能够控制目前的装置和任何未来可能出现的装置。
思考:如何实现 解耦 和 可扩展。