什么是行动设计模式?

11

什么是行为设计模式?我以前没有听说过。我怀疑它与命令设计模式 [维基百科] 相同,但我找不到任何相关资源。

3个回答

14

你说的没错,动作模式等同于命令模式。在 GUI 设计中,更常被称为动作模式,例如:“当某个按钮被按下时,执行此操作”。在代码中,该按钮将与某种类型的动作对象相连。


8

我现在正在阅读MSDN上的 "Action/Executor Pattern",我必须不同意命令(Command)和Action/Executor模式是相同的这一前提。

从SourceMaking.com关于Command Pattern的描述中:

  • 将请求封装为对象,从而使您能够使用不同的请求对客户端进行参数化,排队或记录请求,并支持可撤消操作。
  • 将“在对象上调用方法”的调用提升到完整的对象状态
  • 面向对象的回调

从MSDN文章中关于Action/Executor模式的描述:

Action/Executor模式识别了一种将用例映射到代码的策略,从而实现更好的可见性和敏捷性。此外,它解决了污染实体和跳过事务的正确使用的问题。

区别在于“操作”封装了一个或多个步骤,成功执行这些步骤后会将控制权委托给另一个负责知道如何将这些更改持久化到数据库、Web服务或文件存储的对象。操作与其如何执行/持久化是分离的。
“命令”感觉像是Action/Executor模式的一半——“操作”似乎与“命令”同义。Action/Executor模式进一步描述了另一个关注点,其责任是将“操作”或“命令”生成的更改保存在某个地方。

1
Action设计模式与Command设计模式相同。Action是一个关键实体,它将有关其行为、对其do()方法执行的处理方式、如何撤消等信息封装在其中。当应用程序或其任何组件按照Action设计模式进行设计时,那么应用程序中的每个活动都可以表示为一个Action,每个事物都可以多次重做/撤消。例如,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){}
}

希望它有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接