设计模式-命令模式

来源:互联网 发布:mac cad 看图软件 编辑:程序博客网 时间:2024/05/29 04:33

一、命令模式

命令模式将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。

当需要将发出请求的对象和执行请求的对象解耦的时候,使用命令模式。

二、应用场景

eg:家电自动化遥控器设计与应用编程接口,希望能创建出来一组控制遥控器的API,让每个插槽都能够控制一个或者一组装置。主要设计目标是让遥控器代码尽可能地简单,这样一来,新的厂商类一旦出现,遥控器并不需要随之修改。因此,我们采用了命令模式,从逻辑上将遥控器的类和厂商的类解耦。相信这将降低遥控器的生产成本,并大大减少未来维护时所需的费用。


三、要点

1、命令模式将发出请求的对象和执行请求的对象解耦

2、在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个或一组动作

3、调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用

4、调用者可以接受命令当做参数,甚至在运行时动态地进行

5、命令可以支持撤销,做法是实现一个undo()方法来回到execute()被执行前的状态

6、宏命令是命令的一种简单延伸,允许调用多个命令。宏方法也可以支持撤销

7、实际操作时,很常见使用“聪明”命令对象,也就是直接实现了请求,而不是将工作委托给接收者

8、命令也可以用来实现日志和事务系统

原创粉丝点击