什么是行动设计模式?

时间:2008-12-19 11:28:09

标签: design-patterns command-pattern

什么是动作设计模式,我之前没有听说过?我怀疑它与Command Design pattern [维基百科]相同,但我找不到任何资源。

3 个答案:

答案 0 :(得分:12)

你是对的,动作模式==命令模式。你会在GUI设计中更频繁地听到它被称为动作模式,其形式为“按下某个按钮,执行此动作”。在代码中,按钮将与某种动作对象连接。

答案 1 :(得分:1)

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

来自SourceMaking.com的Command Pattern的描述:

  
      
  • 将请求封装为对象,从而允许您使用不同的请求,队列或日志请求参数化客户端,并支持可撤销操作。
  •   
  • 促进"在对象上调用方法"到完整对象状态
  •   
  • 面向对象的回调
  •   

关于Action / Executor模式的MSDN文章:

  

Action / Executor模式标识了将用例映射到代码的策略,从而提高了可见性和灵活性。此外,它还解决了污染实体和跳过正确使用交易的问题。

差异似乎是"行动"封装一个或多个步骤,当成功执行时,将控制委托给另一个负责知道如何将这些更改持久保存到数据库,Web服务或文件存储的对象。该操作与执行/持久化的方式分离。

A"命令"感觉就像Action / Executor模式的一半 - " action"似乎是"命令"的同义词。 Action / Executor模式更进一步,描述了另一个关注点,它的职责是采取" action"生成的更改。或"命令"把它们保存到一些地方。

答案 2 :(得分: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){}
}

希望它有所帮助。