“HeadFirst设计模式“:命令模式-创新互联

命令模式

命令模式定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
命令模式,封装方法调用,命令模式可将“动作的请求者”从“动作的执行者”对象中解耦。类图,如下:

10年的大安市网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整大安市建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“大安市网站设计”,“大安市网站推广”以来,每个客户项目都认真落实执行。

“Head First 设计模式“ :命令模式


生活中例子:餐厅点菜(顾客,服务员,厨师关系,顾客订单告诉服务员就是,不用直接厨师打交道,厨师收到服务员的发来的订单后开始做好大餐)。


命令模式的优点
● 在命令模式中, 请求者不直接与接收者交互, 即请求者不包含接收者的引用, 因此彻底消除了彼此之间的耦合.
● 命令模式满足"开-闭"原则. 如果增加新的具体命令和该命令的接收者, 不必修改调用者的代码, 调用者就可以使用新的命令对象; 反之, 如果增加新的调用者, 不必修改现有的具体命令和接收者, 新增加的调用者就可以使用自己已有的具体命令
● 由于请求者被封装到了具体命令中, 那么就可以将具体命令保存到持久化的媒介中, 在需要的时候, 重新执行这个具体命令. 因此使用命令模式可以记录日志.
● 使用命令模式可以对请求者的"请求"进行排队. 每个请求都各自对应一个具体命令,因此可以按照一定的顺序执行这些命令.


命令模式的使用场景
● 命令模式将发出请求的对象和执行请求的对象进行解耦
● 用于队列请求,命令对象和一般对象一样可以被传来传去,只要实现统一的接口方法,可以被任意调用
● 用于日志请求,将所有动作记录在日志中,以便系统死机后能够重新调用来恢复


案例1:实现一个家庭自动化遥控器,能遥控灯,空调,,,等设备的开/关。(硬件api类是厂家提供),类图如下:
“Head First 设计模式“ :命令模式


更多需求思考?
● 如果需要撤销命令,怎么修改呢?
● 如果需要组合命令,比如(先打开灯,然后打开电视,然后打开热水器,打开影响),这么实现呢?
● 如命令需要跨jvm,跨机器执行,怎么实现呢?
● 如果需要宕机后恢复数据,怎么实现呢?


网站标题:“HeadFirst设计模式“:命令模式-创新互联
当前地址:http://myzitong.com/article/dsjjdi.html