2008-12-19 123 views

回答

12

你说得对,动作模式==命令模式。在GUI设计中,你会听到它更频繁地调用动作模式,形式为“按下某个按钮,执行此操作”。在代码中,按钮将与某种操作对象连接起来。

0

动作设计模式与Command设计模式相同。 Action是一个关键实体,它将自身的信息封装在它的行为中,它的do()方法需要做什么处理,它如何被撤消等等。当应用程序或其任何组件按照Action设计模式进行设计时,应用程序中的Everything活动可以以动作的形式表示,每一件事都可以重做/撤消多次。例如。宏在Excel中,文本编辑器撤销/重做等

Action类,这是这种设计模式的构建块可设计如下: -

public interface Action{ 
    public void do(); 
    public void undo(); 
    public void do(int iNoOfTimes); 
} 

public class FileCopyAction implements Action{ 
    private int iActionId; 
    public void do(){} 
    public void undo(){} 
    public void do(int iNoOfItems){} 
} 

希望它能帮助。

1

我现在在MSDN上读“The Action/Executor Pattern”,我不同意Command和Action/Executor模式相同的前提。

Command Pattern的描述在SourceMaking.com:

  • 封装的请求为对象,从而让你参数客户不同的要求,队列或日志请求,并支持可撤销的操作。
  • 推进“的方法的调用的对象上的”完整对象状态
  • 一种面向对象的回调

从MSDN文章有关动作/执行人图案:

Action/Executor模式确定了将用例映射到代码的策略,从而提高了可视性和敏捷性。此外,它还解决了污染实体和跳过适当使用交易的问题。

的差异似乎是一个“行动”封装一个或多个步骤,即执行时成功委派控制,负责了解如何坚持这些变化到数据库,Web服务或文件存储的另一个对象。该操作与执行/保持的方式分离。

“命令”感觉就像是Action/Executor模式的一半 - “动作”似乎与“命令”同义。 Action/Executor模式让事情更进一步,并描述了另一个担心,他的责任是采取“action”或“command”生成的更改并将其保存在某个位置。