Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95491
  • 博文数量: 109
  • 博客积分: 3411
  • 博客等级: 中校
  • 技术积分: 1155
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 09:04
文章分类

全部博文(109)

文章存档

2011年(109)

分类: 系统运维

2011-07-22 17:06:07

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0


命令模式是从界面设计中提取出来的一种分离耦合,提高重用 

的方法。被认为是最优雅而且简单的模式,它的应用范围非常广泛。让我们一起来认识下它 

吧。 

    先从起源说起。在设计界面时,大家可以注意到这样的一种情况,同样的菜单控件,在 

不同的应用环境中的功能是完全不同的;而菜单选项的某个功能可能和鼠标右键的某个功能 

完全一致。按照最差、最原始的设计,这些不同功能的菜单、或者右键弹出菜单是要分开来 

实现的,你可以想象一下,文档上面的一排菜单要实现出多少个形似神非的菜单类 

来?这完全是行不通的。这时,就要运用分离变化与不变的因素,将菜单触发的功能分离出 

来,而制作菜单的时候只是提供一个统一的触发接口。这样修改设计后,功能点可以被不同 

的菜单或者右键重用;而且菜单控件也可以去除变化因素,很大的提高了重用;而且分离了 

显示逻辑和业务逻辑的耦合。这便是命令模式的雏形。 

    下面我们将仔细的讨论下命令模式。 

二、定义与结构 

     《》中命令模式的定义为:将一个请求封装为一个对象,从而使你可用不同的 

请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 

    看起来,命令模式好像神通广大。其实命令模式的以上功能还要看你是怎么写的——程 

序总是程序员写出来的,你写啥它才能干啥:) 

    在我看来,其实命令模式像很多设计模式一样——通过在你的请求和处理之间加上了一 

个中间人的角色,来达到分离耦合的目的。通过对中间人角色的特殊设计来形成不同的模式。 

当然命令模式就是一种特殊设计的结果。 

    看下命令模式是有哪些角色来组成的吧。 

1)  命令角色(Command):声明执行操作的接口。有java 接口或者抽象类来实现。 

2)  具体命令角色(Concrete   Command):将一个接收者对象绑定于一个动作;调用接收 

    者相应的操作,以实现命令角色声明的执行操作的接口。 

3)  客户角色(Client):创建一个具体命令对象(并可以设定它的接收者)。 

4)  请求者角色():调用命令对象执行这个请求。 

5)  接收者角色(Receiver):知道如何实施与执行一个请求相关的操作。任何类都可能作 

    为一个接收者。 

阅读(306) | 评论(0) | 转发(0) |
0

上一篇:责任链模式

下一篇:解释器模式

给主人留下些什么吧!~~