问题标签 [command-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
13 回答
50036 浏览

c# - 命令模式:如何将参数传递给命令?

我的问题与命令模式有关,我们有以下抽象(C# 代码):

让我们使用一个简单的具体命令,该命令旨在从我们的应用程序中删除一个实体。以一个Person实例为例。

我会有一个DeletePersonCommand,它实现ICommand. 该命令需要Person删除作为参数,以便在Execute调用方法时将其删除。

管理参数化命令的最佳方法是什么?如何在执行命令之前将参数传递给命令?

0 投票
3 回答
11379 浏览

design-patterns - 什么是动作设计模式?

什么是动作设计模式,我之前没听说过?我怀疑它与命令设计模式[wikipedia] 相同,但我找不到任何资源。

0 投票
3 回答
1418 浏览

command-pattern - 命令模式:客户端和调用者

在命令模式中:

为什么客户端参与者不应该与调用者参与者是同一类?当客户端参与者和调用者参与者可以是同一个类时,是否存在可能的场景?

0 投票
2 回答
2418 浏览

design-patterns - 如何使用命令模式来降低菜单的复杂性?

假设我有 4 个按钮,我希望每个按钮做不同的事情。我不想要一个大的 switch 语句,根据按下的按钮做不同的事情,我也不想要为每个按钮单击单独的方法。命令模式是解决这个问题的好方法吗?

0 投票
3 回答
753 浏览

design-patterns - 匿名函数是实现命令模式的好方法吗?

我对这种模式很陌生...

0 投票
9 回答
11062 浏览

design-patterns - 命令模式返回状态

有一次我讨论了与命令模式相关的设计。我的同行表示,在调用 .execute() 方法后,命令对象不应返回状态(成功、不成功以及原因)。原因是您不应该担心命令是否被执行,因为命令必须不包含任何状态。但是,您必须在调用后检查该命令是否具有预期效果。他认为的另一点是,在四人帮中,命令模式不存在这种情况(返回状态)。

我主张相反的观点。GoF 不提供这种情况,但可以根据您的需要对模式进行建模。如果命令不成功,调用客户端必须收到状态证明,并最终部署适当的反应。通过强制客户端检查操作是否成功很容易出错并产生重复的代码。此外,在某些情况下,命令会产生结果(例如,在绘图中添加线的命令,会以某种方式将线 id 返回给客户端),并且假装有没有状态的命令意味着您必须从数据模型中“捞出”新的对象标识符。

最后,我们达成了妥协,不返回状态,而是将新创建的对象的 id 保留在命令对象中,无论如何应用程序运行良好,但我现在也很想知道你的意见。

0 投票
15 回答
34332 浏览

java - Java中if语句的长列表

抱歉,我找不到回答这个问题的问题,我几乎可以肯定其他人之前提出过这个问题。

我的问题是我正在编写一些系统库来运行嵌入式设备。我有可以通过无线电广播发送到这些设备的命令。这只能通过文本来完成。在系统库中我有一个线程来处理看起来像这样的命令

问题是它有很多命令会很快演变成失控的事情。看起来很糟糕,调试起来很痛苦,几个月后理解起来令人难以置信。

0 投票
2 回答
5081 浏览

c# - 命令模式:按顺序执行多个命令

我想发出一系列命令执行,但前提是前一个命令成功。现在我在命令对象中引发一个事件,指示命令是成功还是失败。我用它来控制执行,但感觉不优雅。

例子:

这可行,但感觉笨拙且不直观。我可以在 Execute() 上传递一个布尔值,指示成功或失败,但这是同一条路径。我可以在失败时抛出异常,这可能会导致代码更清晰,但可能会有点矫枉过正。

有什么建议么?

0 投票
4 回答
452 浏览

java - Java 设计模式

我正在尝试设计一个应用程序,其中我将拥有一个IAction对象映射。每个IAction对象都有一个方法IAction IAction.processAction(),用于执行其中包含的知识。这可以查询调用 Web 服务等的数据库。在每个IAction控件执行之后,然后将其发送到下一个IAction实例。

当应用程序启动时,它将包含一个Map按正确执行顺序执行的 Map。Integertype 的键Map是执行的顺序。 IAction.processAction()可以将控制跳到IAction地图中的最后一个或一起停止。

我可以在脑海中可视化代码,并且我已经写了一些代码来帮助我解决这个问题。我正在寻找一种可以轻松帮助此类处理的设计模式。我不确定命令模式是否适合这个角色。

我希望有人能告诉我他们认为哪些模式可能符合要求。

0 投票
2 回答
223 浏览

java - 无法从读取标准输入流的方法返回到 main()

我基本上是在尝试从一个从标准输入流中读取用户输入的方法返回。由于用户可以选择退出应用程序,因此我正在尝试找出执行此退出的最佳方法。理想情况下,我将能够返回begin()main()完成,从而退出应用程序。

主要逻辑发生aMachine在用户使用此方法执行给定命令时:

同样,问题是如何在用户输入命令 Q 或 q 后退出应用程序。退出命令是这样的:

现在按照我上一个问题的建议,退出应用程序,我试图返回 main() 并基本上让 main() 完成。这样我就避免了任何使用System.exit(0),尽管那也很好。

所以,在这个例子中,我在类的方法中有一个return语句,当我们收到一个 Q 或来自用户的 q 时调用它。但是,当执行退出命令时,控制流似乎永远不会响应CommandQuit 方法的内部,而不是从循环中返回、退出和返回。executeCommandQuitbegin()while(true)begin()main()return;execute

我的示例中是否缺少任何内容?也许有些事情太明显了,以至于我现在看不到。谢谢你的帮助。