2

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

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

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

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

4

4 回答 4

4

听起来命令模式在这里肯定有一些相关性。

但是,我认为您的做法是错误的。在设计产品的工作方式时,设计模式本质上是作为示例和方法来引导您的思想沿着生产线前进。你所做的,采用一个好的设计,然后试图把它硬塞进一个“官方的”设计模式,都是倒退的。

除此之外,您的IAction对象映射中的关键是什么?听起来(可能链接的)列表对他们来说是一种更自然的结构。

于 2009-10-19T14:45:21.580 回答
3

这听起来像是责任链模式的一种变体。

于 2009-10-19T14:44:39.113 回答
1

您的 IAction 显然遵循命令模式。

您要执行的操作列表可以是复合模式。

于 2009-10-19T14:42:57.967 回答
0

发布您的代码将帮助我们提供良好的解决方案。没有代码,您将仅获得指南。

还有一件事:设计模式只是指导方针。在实施解决方案时,您不应该将您的解决方案置于特定的设计模式中。在为您的问题提出解决方案后,您可以决定您的解决方案是否适合特定模式。如果没有,您仍然可以在没有任何设计模式的情况下实现您的解决方案。

命令模式 seems to be the solution for executing simple commands。如果您的命令彼此独立,简单的命令模式可以解决您的问题。如果您的某些命令依赖于其他命令,那么您必须通过建立层次结构来使用Chain-of-responsibility_pattern 。

复合模式可用于将所有命令存储在 Map 对象中。

于 2016-03-02T16:06:49.163 回答