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