什么是动作设计模式,我之前没有听说过?我怀疑它与Command Design pattern [维基百科]相同,但我找不到任何资源。
答案 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){}
}
希望它有所帮助。