Design Pattern - behavioral - Command模式

Command 模式(命令模式又称为行动(Action)模式或交易(Transaction)模式)
意图:
  将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;
  对请求排队或记录请求日志,以及支持可撤消的操作。

适用性:
  抽象出待执行的动作以参数化某对象,你可用过程语言中的回调(callback)函数表达这种参数化机制。
  【所谓回调函数是指函数先在某处注册,而它将在稍后某个需要的时候被调用。】
Command模式是回调机制的一个面向对象的替代品。
(根据:DesignPatternMiniHandBook.chm)

优点:
  解耦了发送者和接受者之间联系。
  发送者调用一个操作,接受者接受请求执行相应的动作,因为使用Command模式解耦,发送者无需知道接受者任何接口。

如何使用?
  具体的Command模式代码各式各样。因为如何封装命令,不同系统有不同的做法。

对比Factory模式:
  Command是将行为进行封装的典型模式
  Factory是将创建进行封装的模式

典型例子:
1、不少Command模式的代码都是针对图形界面的:
  它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作。

2、电视遥控器例子
  用户按下某个按键,遥控器将这一事件传递给服务器,服务器判断这个事件的含义并采取相应行动。
  遥控器不需要与具体的行为绑定。
  (至于命令是否被保存,是否允许命令的重复执行和回滚,我想这是命令模式的一个应用推广。)

参考:
http://blog.csdn.net/flyforlove/article/details/1661965
http://www.jdon.com/designpatterns/command.htm
http://wenku.baidu.com/view/81d5223767ec102de2bd898e.html

posted @ 2012-02-25 11:34  万法自然~  阅读(156)  评论(0编辑  收藏  举报