一、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) 编辑 收藏 所属分类:
模式与重构