问题标签 [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.
design-patterns - 策略模式和委托模式的区别
策略模式和委托模式(不是委托)有什么区别?
xml - 策略模式中的字符串到策略
我在 AS3 工作,但我想这可能是一个普遍的问题,所以我会更模糊地描述它......
我正在使用 XML 文件来定义实现策略模式的特定对象类的参数。将会有各种各样的对象,这对我们来说是一个设计者友好的解决方案来定制这些对象。由于我只能在 XML 文件中定义字符串,有人可以建议一种整洁的方法来获取该字符串并实施正确的策略吗?
我最初有两个想法。首先,将字符串传递给对象的构造函数,然后在对象中拥有一个应用正确策略的 Switch Case。
其次,将开关放在控制器中的类之外,然后将正确的策略传递给对象的构造函数。
第二个似乎是更干净的版本,因为对象类本身不受我的具体实现的影响。但两者都感觉不太对。
任何其他建议将不胜感激!
c# - C# 策略模式和数据库访问
我是设计模式的新手,现在我想实现策略模式。这是我的代码:
在 SendAppointment 类的方法 Send 中,项目将被发送。我的问题是,我必须在这个类中连接到数据库吗?如果是这样,那么我还必须连接到 SendTask 中的数据库。但在这一点上,我在重复自己,对吗?因此,如果连接字符串发生更改,我必须在每个类中修改它。我怎么解决这个问题?
spring - 如何在 AOP 中实现策略模式
谁能告诉我如何在 AOP 中实现策略模式?
使用 Spring-AOP 或 AspectJ 的示例将非常有帮助。
design-patterns - 策略设计模式和状态设计模式有什么区别?
策略设计模式和状态设计模式有什么区别?我在网上浏览了很多文章,但无法清楚地看出区别。
有人可以解释一下外行术语的区别吗?
c# - 使用 Unity 的策略模式和依赖注入
我终于开始使用依赖注入(姗姗来迟);我开始使用 Unity 并遇到了策略模式的问题。我可以使用容器返回给我基于名称的策略的具体实现,但我没有看到我应该如何在上下文中获得正确的策略。
让我们用一个简单的例子来说明:上下文是一辆汽车,它有一个 IEngine(策略),有 2 个实现,FastEngine 和 SlowEngine。代码看起来像这样:
我的问题如下:我应该如何实例化一辆快车或一辆慢车?我可以使用容器为我提供每个实现,我可以设置一个“默认”实现来使用:
但我想要的是能够请求一辆具有特定战略实施的汽车——比如
我可以使用容器来做到这一点吗?或者我应该写一个使用容器的工厂?任何指导将不胜感激 - 我不确定我是否对此有正确的想法!
design-patterns - 何时以及为什么应该使用策略模式?
什么时候使用策略模式?
我看到这样的客户端代码片段:
看起来您可以将其重构为:
第一部分代码直接取自维基百科页面。一个很大的区别是上下文消失了,但无论如何它在示例中没有做任何事情。也许有人有一个更好的例子来说明策略是有意义的。我通常喜欢设计模式,但这似乎增加了复杂性而没有增加实用性。
design-patterns - 什么时候适合为对象创建装饰器,什么时候适合重写对象以允许应用策略?
例如,假设我有一个可以添加到购物车的 Product 类。当它也在购物车中时,我可能希望能够将它与另一件商品打包在一起,并添加 15% 的折扣。
产品类应该用允许交易的新子类装饰,还是应该重新设计产品类以允许购物车将降价“策略”对象附加到产品,从而降低价格?
这是一个抽象的例子,所以随它去吧。
ruby - 使用不同数据进行计算的计费模型的策略模式?
我们有一个发票模型,可以通过几种不同的方式向客户收费。为简洁起见,我将重点关注两个:每次展示费用和每次电话查询费用。我的想法是将这些(以及其他)作为策略实现,然后将它们动态地混合到发票类中。
这似乎是合适的,因为有不同的信息来源用于确定展示次数/调用次数。这可以封装在策略中,同时将基本公式保留在Invoice
类中。
每次展示费用的计算很简单:num impressions X cost per impression
。
电话查询的计算稍微复杂一些:num calls X cost per call
.
然后,模块可以是:
但是,通话是否重要取决于通话的时长,这因型号而异。因此,当我搜索电话日志时,我需要有这个值。
我的问题是这个值存储在哪里?我可以为基于 10 秒调用的发票创建一个策略,并为 30 秒调用一个单独的发票,但这似乎很浪费。如果达成的交易希望阈值为 15 秒,我需要编写一个新策略。解决这个问题的最佳设计选择是什么?