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

javascript - 有哪些使用 JavaScript 实现设计模式的示例?

我是使用 JavaScript 的中等熟练程序员,但我不是大师。我知道你可以用它做一些非常强大的事情,除了相当基本的 DOM 操作之外,我还没有看到太多东西。我想知道人们是否可以提供一些使用 JavaScript 的传统设计模式概念的示例,例如工厂方法、单例等。在什么情况下这些模式会在网络上使用?

0 投票
2 回答
1112 浏览

perl - Perl 中策略模式的干净实现

如何在 Perl 中编写策略模式的干净实现?我想以一种利用 Perl 特性的方式来做这件事。

0 投票
6 回答
34230 浏览

design-patterns - 策略模式如何运作?

它是如何工作的,它的用途是什么,什么时候应该使用它?

0 投票
4 回答
3472 浏览

c++ - C++策略设计模式,制作接口数组

在实现了策略模式之后,我想创建一个接口类型的数组,然后我可以向其中添加任何具体类型。

对于那些不知道策略模式的人: http ://en.wikipedia.org/wiki/Strategy_pattern 在这个特定的例子中,我想做一个 StrategyInterface 数组,然后我可以用具体类型的 A、B 和 C 填充. 但是,因为这是一个抽象类,我无法完成它。有没有办法做到这一点,或者完全不可能,而不删除抽象方法?

0 投票
8 回答
10547 浏览

design-patterns - 使用策略模式的好处在哪里?

在 Wikipedia 上查看了这个解释,特别是 C++ 示例,但未能认识到仅定义 3 个类、创建实例并调用它们与该示例之间的区别。我所看到的只是将另外两个类放入该过程中,并且看不到哪里会有好处。现在我确定我错过了一些明显的东西(树木的木材) - 有人可以用一个明确的现实世界的例子来解释它吗?


到目前为止,我可以从答案中得出什么,在我看来,这只是一种更复杂的方法:

[Edit-update] 我上面提到的函数被替换为另一个类,其中 MoveAlong 将是基于在这个新类中实现的算法根据需要设置的属性。(类似于接受的答案中展示的内容。)


[编辑更新]结论

策略模式有它的用途,但我是 KISS 的坚定信徒,并且倾向于更直接和更少混淆的技术。主要是因为我想传递易于维护的代码(并且'因为我很可能是必须进行更改的人!)。

0 投票
2 回答
4848 浏览

c++ - 战略与政策的对立和政策与战略的对立

当我第一次发现策略模式时,我对它为我和我的程序提供的看似无穷无尽的可能性感到惊讶。我可以更好地封装模型的行为,甚至可以即时交换这种行为。但该策略也可用于为包含对象提供特征和有效负载 - 在超类中声明的数据。生活很好。

随之而来的是 Policy 模式,它可以让我在向包含类提供参数方面更加灵活 - 整个类,我喜欢的装备,尽管动态交换行为......这不太容易(除非策略的一部分是要有策略!)。

这两种模式对我来说似乎都非常强大,我喜欢在不同的情况下同时使用这两种模式。但我不确定在某些情况下是否有特定/典型/更实用的应用程序。

我想知道:您在哪里使用策略以及在哪里使用策略?哪里更适合?

0 投票
19 回答
91851 浏览

java - 策略模式的真实示例

我一直在阅读有关OCP 原则以及如何使用策略模式来实现这一点的内容。

我打算尝试向几个人解释这一点,但我能想到的唯一示例是根据“订单”的状态使用不同的验证类。

我在网上阅读了几篇文章,但这些文章通常不会描述使用该策略的真正相似原因,例如生成报告/账单/验证等...

有没有你认为策略模式很常见的真实例子?

0 投票
4 回答
1703 浏览

design-patterns - 谁能解释策略模式与控制反转的关系?

谁能准确解释策略模式与控制反转的关系?

0 投票
14 回答
43548 浏览

design-patterns - 桥接模式和策略模式有什么区别?

我尝试阅读有关dofactory、维基百科和许多网站的许多文章。我不知道桥接模式和策略模式之间的区别。

我知道它们都将抽象与其实现分离,并且可以在运行时更改实现。

但是我还是不知道在什么情况下应该使用策略,或者在什么情况下应该使用桥牌。

0 投票
6 回答
3413 浏览

c# - 在 C# 中,策略模式和委托有什么区别?

我一直在查看策略模式实现示例,在我看来它们与 c# 委托非常相似。我看到的唯一区别是策略模式实现不需要显式声明委托。

但除此之外,它们似乎都指向需要特定签名的函数,并且它们都可以用来确定在运行时要执行什么。

我缺少更明显的区别吗?

我想一个相关的问题是,如果它们相似,那么使用一个比另一个有什么优势?