问题标签 [strategy-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 投票
4 回答
8813 浏览

design-patterns - 策略模式和委托模式的区别

策略模式和委托模式(不是委托)有什么区别?

0 投票
2 回答
694 浏览

xml - 策略模式中的字符串到策略

我在 AS3 工作,但我想这可能是一个普遍的问题,所以我会更模糊地描述它......

我正在使用 XML 文件来定义实现策略模式的特定对象类的参数。将会有各种各样的对象,这对我们来说是一个设计者友好的解决方案来定制这些对象。由于我只能在 XML 文件中定义字符串,有人可以建议一种整洁的方法来获取该字符串并实施正确的策略吗?

我最初有两个想法。首先,将字符串传递给对象的构造函数,然后在对象中拥有一个应用正确策略的 Switch Case。

其次,将开关放在控制器中的类之外,然后将正确的策略传递给对象的构造函数。

第二个似乎是更干净的版本,因为对象类本身不受我的具体实现的影响。但两者都感觉不太对。

任何其他建议将不胜感激!

0 投票
3 回答
2608 浏览

c# - C# 策略模式和数据库访问

我是设计模式的新手,现在我想实现策略模式。这是我的代码:

在 SendAppointment 类的方法 Send 中,项目将被发送。我的问题是,我必须在这个类中连接到数据库吗?如果是这样,那么我还必须连接到 SendTask 中的数据库。但在这一点上,我在重复自己,对吗?因此,如果连接字符串发生更改,我必须在每个类中修改它。我怎么解决这个问题?

0 投票
2 回答
1658 浏览

spring - 如何在 AOP 中实现策略模式

谁能告诉我如何在 AOP 中实现策略模式?

使用 Spring-AOP 或 AspectJ 的示例将非常有帮助。

0 投票
21 回答
86385 浏览

design-patterns - 策略设计模式和状态设计模式有什么区别?

策略设计模式和状态设计模式有什么区别?我在网上浏览了很多文章,但无法清楚地看出区别。

有人可以解释一下外行术语的区别吗?

0 投票
1 回答
10658 浏览

c# - 使用 Unity 的策略模式和依赖注入

我终于开始使用依赖注入(姗姗来迟);我开始使用 Unity 并遇到了策略模式的问题。我可以使用容器返回给我基于名称的策略的具体实现,但我没有看到我应该如何在上下文中获得正确的策略。
让我们用一个简单的例子来说明:上下文是一辆汽车,它有一个 IEngine(策略),有 2 个实现,FastEngine 和 SlowEngine。代码看起来像这样:

我的问题如下:我应该如何实例化一辆快车或一辆慢车?我可以使用容器为我提供每个实现,我可以设置一个“默认”实现来使用:

但我想要的是能够请求一辆具有特定战略实施的汽车——比如

我可以使用容器来做到这一点吗?或者我应该写一个使用容器的工厂?任何指导将不胜感激 - 我不确定我是否对此有正确的想法!

0 投票
10 回答
25109 浏览

design-patterns - 何时以及为什么应该使用策略模式?

什么时候使用策略模式

我看到这样的客户端代码片段:

看起来您可以将其重构为:

第一部分代码直接取自维基百科页面。一个很大的区别是上下文消失了,但无论如何它在示例中没有做任何事情。也许有人有一个更好的例子来说明策略是有意义的。我通常喜欢设计模式,但这似乎增加了复杂性而没有增加实用性。

0 投票
2 回答
126 浏览

design-patterns - 什么时候适合为对象创建装饰器,什么时候适合重写对象以允许应用策略?

例如,假设我有一个可以添加到购物车的 Product 类。当它也在购物车中时,我可能希望能够将它与另一件商品打包在一起,并添加 15% 的折扣。

产品类应该用允许交易的新子类装饰,还是应该重新设计产品类以允许购物车将降价“策略”对象附加到产品,从而降低价格?

这是一个抽象的例子,所以随它去吧。

0 投票
2 回答
831 浏览

ruby - 使用不同数据进行计算的计费模型的策略模式?

我们有一个发票模型,可以通过几种不同的方式向客户收费。为简洁起见,我将重点关注两个:每次展示费用和每次电话查询费用。我的想法是将这些(以及其他)作为策略实现,然后将它们动态地混合到发票类中。

这似乎是合适的,因为有不同的信息来源用于确定展示次数/调用次数。这可以封装在策略中,同时将基本公式保留在Invoice类中。

每次展示费用的计算很简单:num impressions X cost per impression

电话查询的计算稍微复杂一些:num calls X cost per call.

然后,模块可以是:

但是,通话是否重要取决于通话的时长,这因型号而异。因此,当我搜索电话日志时,我需要有这个值。

我的问题是这个值存储在哪里?我可以为基于 10 秒调用的发票创建一个策略,并为 30 秒调用一个单独的发票,但这似乎很浪费。如果达成的交易希望阈值为 15 秒,我需要编写一个新策略。解决这个问题的最佳设计选择是什么?

0 投票
3 回答
679 浏览

design-patterns - 谁应该实例化和分配运行时策略实现?

在实现策略模式时,如何确定哪个类负责:

  1. 选择具体的具体策略实现传递给 Context 类(假设选择是基于一些复杂的业务逻辑而不是静态标志)

  2. 实例化上述具体实现并将其实际注入到 Context 类中

感觉应该有一些客观的指导来涵盖这一点。我已经阅读了各种 OOP 模式(即GRASPSOLID),但我仍然对这个特定问题不太清楚。