问题标签 [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.
javascript - 有哪些使用 JavaScript 实现设计模式的示例?
我是使用 JavaScript 的中等熟练程序员,但我不是大师。我知道你可以用它做一些非常强大的事情,除了相当基本的 DOM 操作之外,我还没有看到太多东西。我想知道人们是否可以提供一些使用 JavaScript 的传统设计模式概念的示例,例如工厂方法、单例等。在什么情况下这些模式会在网络上使用?
perl - Perl 中策略模式的干净实现
如何在 Perl 中编写策略模式的干净实现?我想以一种利用 Perl 特性的方式来做这件事。
design-patterns - 策略模式如何运作?
它是如何工作的,它的用途是什么,什么时候应该使用它?
c++ - C++策略设计模式,制作接口数组
在实现了策略模式之后,我想创建一个接口类型的数组,然后我可以向其中添加任何具体类型。
对于那些不知道策略模式的人: http ://en.wikipedia.org/wiki/Strategy_pattern 在这个特定的例子中,我想做一个 StrategyInterface 数组,然后我可以用具体类型的 A、B 和 C 填充. 但是,因为这是一个抽象类,我无法完成它。有没有办法做到这一点,或者完全不可能,而不删除抽象方法?
design-patterns - 使用策略模式的好处在哪里?
我在 Wikipedia 上查看了这个解释,特别是 C++ 示例,但未能认识到仅定义 3 个类、创建实例并调用它们与该示例之间的区别。我所看到的只是将另外两个类放入该过程中,并且看不到哪里会有好处。现在我确定我错过了一些明显的东西(树木的木材) - 有人可以用一个明确的现实世界的例子来解释它吗?
到目前为止,我可以从答案中得出什么,在我看来,这只是一种更复杂的方法:
[Edit-update] 我上面提到的函数被替换为另一个类,其中 MoveAlong 将是基于在这个新类中实现的算法根据需要设置的属性。(类似于接受的答案中展示的内容。)
[编辑更新]结论
策略模式有它的用途,但我是 KISS 的坚定信徒,并且倾向于更直接和更少混淆的技术。主要是因为我想传递易于维护的代码(并且'因为我很可能是必须进行更改的人!)。
c++ - 战略与政策的对立和政策与战略的对立
当我第一次发现策略模式时,我对它为我和我的程序提供的看似无穷无尽的可能性感到惊讶。我可以更好地封装模型的行为,甚至可以即时交换这种行为。但该策略也可用于为包含对象提供特征和有效负载 - 在超类中声明的数据。生活很好。
随之而来的是 Policy 模式,它可以让我在向包含类提供参数方面更加灵活 - 整个类,我喜欢的装备,尽管动态交换行为......这不太容易(除非策略的一部分是要有策略!)。
这两种模式对我来说似乎都非常强大,我喜欢在不同的情况下同时使用这两种模式。但我不确定在某些情况下是否有特定/典型/更实用的应用程序。
我想知道:您在哪里使用策略以及在哪里使用策略?哪里更适合?
java - 策略模式的真实示例
我一直在阅读有关OCP 原则以及如何使用策略模式来实现这一点的内容。
我打算尝试向几个人解释这一点,但我能想到的唯一示例是根据“订单”的状态使用不同的验证类。
我在网上阅读了几篇文章,但这些文章通常不会描述使用该策略的真正相似原因,例如生成报告/账单/验证等...
有没有你认为策略模式很常见的真实例子?
design-patterns - 谁能解释策略模式与控制反转的关系?
谁能准确解释策略模式与控制反转的关系?
design-patterns - 桥接模式和策略模式有什么区别?
我尝试阅读有关dofactory、维基百科和许多网站的许多文章。我不知道桥接模式和策略模式之间的区别。
我知道它们都将抽象与其实现分离,并且可以在运行时更改实现。
但是我还是不知道在什么情况下应该使用策略,或者在什么情况下应该使用桥牌。
c# - 在 C# 中,策略模式和委托有什么区别?
我一直在查看策略模式实现示例,在我看来它们与 c# 委托非常相似。我看到的唯一区别是策略模式实现不需要显式声明委托。
但除此之外,它们似乎都指向需要特定签名的函数,并且它们都可以用来确定在运行时要执行什么。
我缺少更明显的区别吗?
我想一个相关的问题是,如果它们相似,那么使用一个比另一个有什么优势?