问题标签 [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 投票
1 回答
403 浏览

spring - 如何将 GWT 命令模式与 spring 集成

我有一个项目,我正在使用 GWT 命令模式来实现 RPC。在这里,我如何将 Spring 与 GWT 集成。没有 Spring 我能够实现 RPC。但是在这里我需要对 GWT 服务器端包使用 Spring Dependency Injection。

我找不到合适的示例或链接来实现它。任何人都可以提供有此要求的链接和示例。

如果没有命令模式,我可以通过参考以下链接将 spring 与 GWT 集成

http://technophiliac.wordpress.com/2008/08/24/giving-gwt-a-spring-in-its-step/

https://docs.google.com/document/pub?id=1USHYx9cB3B1s1zM4dlkzEZ759D3lEfavn_dDewvBkaA

谢谢,萨丽莎

0 投票
2 回答
33301 浏览

uml - UML类图中虚线箭头是什么意思?

UML 类图中的虚线箭头一般是什么意思?

举个例子:这张图中虚线箭头的含义是什么(从客户端到ConcreteCommand):

在此处输入图像描述

文章:命令模式

0 投票
3 回答
35641 浏览

java - 如何在 java 中为操作实现简单的撤消/重做?

我创建了一个 XML 编辑器,但我被困在最后一个阶段:添加撤消/重做功能。

当用户向 JTree 添加元素、属性或文本时,我只需要添加撤消/重做。

我对此还是很陌生,但是今天在学校里,我尝试(未成功)创建两个堆栈对象 [],称为撤消和重做,并将执行的操作添加到其中。

例如,我有:

performElementAction 实际上只是向 JTree 添加了一个元素。

我想添加一种方法来将此执行的操作添加到我的撤消堆栈中。有没有一种简单的方法来撤消.push(执行的整个操作)或其他什么?

0 投票
4 回答
2065 浏览

java - 遍历要执行的命令列表-哪种模式?

我编写了一个 Java 程序,它读取包含要执行的命令的文件(使用我自己编写的语言)。命令以字符串形式读入并放入数组中。现在“调度程序”方法将遍历数组,解释命令并调用将作用于它们的相应方法。

这当然会导致一大堆嵌套的 if 语句:

现在我只有几个命令,但是如果我想添加数百个呢?代码将变得无法维护。

现在我想知道是否有可能完全摆脱条件逻辑。命令模式在这里似乎没有多大用处,因为无论如何我都必须在某个时候解释字符串..这意味着很多嵌套的“if”。如果不可能,以一种易于添加、编辑或删除命令的方式重组命令及其语法的最佳方法是什么?

0 投票
1 回答
2211 浏览

domain-driven-design - 如何为在一个上下文中为聚合根但在另一个上下文中不为聚合根的实体编写命令?

我正在为一家寻找供应商为员工搬迁提供服务的公司开展一个项目。这些服务是搬运工不具备专业知识的事情,例如准备钢琴或运输或为贵重物品建造板条箱。

在这个域中,一个订单有 1:many Locations。

在搬家行业中,订单经常在不断变化,直到供应商执行要求他提供的服务。因此,在我们的模型中,我们有一些适用于订单和地点的状态(例如已提交、已取消、暂停)。

有一些非常简单的业务规则适用于此。这是一个示例:

  1. 当订单被搁置时,所有位置都被搁置。
  2. 如果其父订单处于暂停状态,则不能取消暂停位置。

等等。从这些规则中,对我来说很明显这形成了一个聚合根边界。因此,我有一个MyClient.Statuses.Order聚合,Statuses上下文/服务的名称/您想调用的名称在哪里:

这两个对象(订单、位置)在其他上下文中都有 GUID id(例如,对于没有状态转换的基于 CRUD 的属性)。所以现在我们终于解决了我的问题:

如何编写命令和处理程序以暂停位置?

我想保持这个东西 DRY 和面向服务以最小化耦合,但是在一个地方保持两个实体之间的父子关系真的很困难。

选项 1 - 单一位置 ID:

选项 2 - 订单 ID 和位置 ID:

选项 3 - 具有封装“一个位置,属于一个订单”的类的单个参数

0 投票
2 回答
324 浏览

c++ - 在函数调用中使用模板模板参数

实际上,所有答案都很好,而且内容丰富,但它们并没有解决我的特定问题。我不认为这是回答的非常乐于助人的人的错,而是我的问题措辞很糟糕。因此,我决定在这里发布一个带有更多相关代码示例的全新问题:Mixing Command pattern, Factory pattern and templates all together ...。如果有人愿意看...

现在原来的问题:

我不认为有可能做我想做的,但我问,以防万一......

我有一系列我想通过工厂创建的模板类。我使用工厂的原因是工厂有一些数据成员用于初始化通过该工厂创建的每个类。

例如,让我们考虑这个类:

我试图创建一个命令工厂,所以它可以创建像上面那样的类,并处理它们的初始化、生命周期等......

在我的(非模板)CommandFactory 中,我定义了以下方法:

但是,这不会编译。“void operator()(P1 p1, P2 p2, P3 p3, P4 p4)”行产生以下错误:

错误 C2065:“P1”:未声明的标识符

因为像“DoSomething”这样的类只有一个声明(DoSomething 将始终使用 < int, float >),我认为我可以使用模板参数推导,并最终得到如下语法:

有可能吗?如果是这样,适当的语法是什么?

我想我总是可以定义我的工厂方法,例如:

然后打电话

但这是多余的,不是很优雅......

0 投票
4 回答
1074 浏览

c++ - 将命令模式、工厂模式和模板混合在一起......

我已经在这里问了一个类似的问题,但是我并没有真正得到我想要的答案,因为我的问题表述得很糟糕,而且例子也很糟糕。所以我再试一次,希望有更好的解释和更好的代码。

下面的代码已经去掉了不必要的细节,但它可以工作。问题是如果可能的话,我想使用模板参数推导来简化模板函数调用。

我有一个创建命令的工厂。要创建一个命令,我使用这样的调用:

您可能已经猜到,parameter1 的类型是 ParameterType1,依此类推...。

现在,如果我们看一下命令的定义 - DoSomeStuff- 本身:

如您所见,ParameterTypeN 信息已经在 DoSomeStuff 声明中。

我想知道是否有可能以某种更简单的方式替换上面的 createCommand 调用:

这是 CommandFactory 代码:

基本上,重点是移动CommandFactory 内部的复杂性,以使“客户端代码”(对createCommand 的调用)尽可能简单和简短。

有任何想法吗 ?

0 投票
1 回答
808 浏览

oop - 具有可变延迟的客户端服务器命令设计模式

我正在编写一个客户端程序来控制服务器,该服务器又控制一些大型硬件。服务器需要接收命令来初始化、启动、停止和控制硬件。

从客户端到服务器的连接是通过 TCP 或 UDP 套接字。每个命令都使用 SCADA 协议(例如 Modbus 或 DNP3)封装在适当的消息中。

初始化阶段的一部分涉及从客户端向服务器发送一系列命令。在某些情况下,命令之间必须有几秒钟的延迟,以防止同时初始化多个子系统。延迟的值取决于命令的类型。

我认为命令设计模式是一个很好的方法。客户端实例化 ConcreteCommands,Invoker 将其放入队列中。我不确定如何合并可变延迟,以及是否有更好的模式涉及计时器和队列来处理发送具有可变延迟的消息。

我正在使用 C#,但这可能无关紧要,因为它更像是一个设计模式问题。

0 投票
2 回答
852 浏览

asp.net-mvc-3 - .NET MVC 3 中的命令模式(从控制器中删除垃圾)

我正在尝试在我的 .NET MVC 3 应用程序上实现此命令模式,专门用于保存对事物的编辑。我不确定如何进行。在我解决实际问题之前,这里是简化的代码:

我的 EditThingViewModel 与我的域完全断开连接,该域由 POCO 类组成。看起来我的 EditThingCommand 应该是这样的:

但是,构建 ModifiedThing 仍然会在我的控制器中进行。这是本案例中的大部分工作。到 ModifiedThing 构建时(并且“旧”时间戳应用于它以进行乐观并发检查),剩下的就是命令在我的数据上下文上调用 Update。

显然,能够用其他命令轻松地装饰它是有价值的,但我也希望能够将 ModifiedThing 的构造移到我的控制器之外。(也许这个问题实际上就是这样。) EditThingCommand 在我的域中,并且没有对 EditThingViewModel 的引用,所以它不能去那里。在我的表示层中有另一个命令用于将我的视图模型映射到我的 poco 实体是否有意义?

0 投票
4 回答
13715 浏览

java - 命令模式应用的真实世界示例

命令模式可以用来实现Transactional behavior(和Undo)。
但是我无法通过谷歌搜索找到这些示例。我只能找到一些微不足道的灯的例子,即switched onoff
我在哪里可以找到Java使用 ? 实现的这种/这些行为的编码示例(最好在 中)Command Pattern