posts - 262,  comments - 221,  trackbacks - 0
一、Command模式的适用场合:

让方法运行最常见的方式是调用之,但是在很多情况下,我们不能控制和提供方法执行的上下文和时机。这种情况下,可以把方法封装在对象中。通过在对象中存储调用方法所需的信息,就可以让客户端或者服务决定何时调用这个方法。

Command模式的意图是把请求封装在对象中。

  --摘自《Java设计模式》第24章:Command(命令)模式

二、Command模式的经典应用:

Command模式的经典应用就是菜单命令。如何安排才能让一个类在用户单击菜单的时候调用对应的方法呢?解决的方法就是应用多态性,具体做法如下:首先将操作的名称固定,然后针对不同的类给出不同的实现。

  --摘自《Java设计模式》第24章:Command(命令)模式

三、Command模式的简单例子:

参见http://www.jdon.com/designpatterns/command.htm

四、Command模式的特点:

·有一个顶层的接口,用于表示“执行命令”这个抽象动作,其次该方法中往往会含有用于区分请求类型的形参
·有一至多个实现类,每个实现类实现了接口中“执行命令”这个抽象方法,提供具体的实现
·有一个用来装载、保存命令执行类的容器对象,负责加载、初始化、查找、调用内部的各个命令对象

 
五、Command调用的顺序:

·初始化命令队列,装载各个命令对象(Command接口的实现类)
·接收事件/请求,将其作为参数传递给命令队列
·命令队列在自己内部查找合适的处理者,调用接口实现方法处理请求

六、Command模式和其它模式的结合:

·Command模式和Memento模式结合,实现“撤销”操作:
   这一点需要和“备忘录模式”配合,每执行一个操作之前,先保存当前的状态

·Command模式和Observer模式结合,实现“监听-触发”流程:
   在GUI界面中,注册一个监听器(Observer),监听各个组件(Observable),当被监听组件的被激活时,向监听器传递一个信息,监听器接收信息,作为参数传递给命令队列。命令队列根据参数查找,执行命令。


-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2008-04-07 15:13 Paul Lin 阅读(3455) 评论(0)  编辑  收藏 所属分类: 模式与重构

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜