码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式 之 命令模式

时间:2016-02-11 21:30:19      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

      命令模式强调的是“封装调用”,即把方法调用封装起来。通过封装方法调用,我们可以把运算块封装成型,所以调用该运算的对象不需要关心事情是如何运行的,他们只需要知道如何使用包装成型的方法来完成它就可以了。通过封装方法调用,我们也可以做一些很聪明的事情,比如记录日志,或者重复使用这些封装来实现撤销。

      我们通过下面这个例子 来了解命令模式:我们要设计一个家电自动化遥控器,这个遥控器具有多个可编程的插槽(每个插槽可以指定到一个不同的家电设备),每个插槽都对应一对开关按钮,整个遥控器还具备一个整体的撤销按钮,整体外观如下图所示。

技术分享

      插槽中可以插入多个家用电器的插口:电视、冰箱、电灯、大门等,因此,我们的系统存在两个难点:第一,各个家用电器的使用方法不同,因此提供给它们的接口不尽相同;第二,以后还会有更多的家电加入系统

      这个时候,我们就要用到“命令模式”了。命令模式可以将“动作的请求者”从“动作的执行者”对象中解耦。在上面的例子中,动作的请求者可以是遥控器,而动作的执行者则可以是一种家电代表的类。怎样才能做到“解耦”呢?我们需要利用“命令对象”。利用命令对象,我们可以把命令(例如打开电灯)封装成一个特定的对象(例如客厅电灯对象),所以,如果对每个按钮都存在一个命令对象,那么当按钮被按下的时候,就可以请命令对象做相关的工作。话句话说,使用命令模式,我们能够创建一个API(应用程序编程接口),将这些命令对象加载到按钮插槽,让遥控器的代码尽量保持简单,而把家电自动化的工作和进行该工作的对象一起封装在命令对象中。

未完待续。。。。。。

 

设计模式 之 命令模式

标签:

原文地址:http://www.cnblogs.com/blog-wzy/p/5186652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!