strategy-pattern相关内容

“策略设计模式"仅仅是多态性的基本使用吗?

在策略设计模式中,我们所做的是 创建一个通用接口. 使用该接口和重写的方法实现一组类. 让运行时为与该公共接口具有相同类型的对象选择实际类,并调用将根据类正确解析的覆盖方法. 我的问题是,这不是我们学习的多态性和方法覆盖的基本示例吗? 除了可以使用抽象类,替换通用接口之外. 解决方案 你描述的是一种实现策略模式的方法.您还描述了如何实现很多不同的设计,因为我们可能想要 ..

没有“switch"语句的策略模式?

我一直在阅读有关策略模式的一些资料,并有一个问题.我在下面实现了一个非常基本的控制台应用程序来解释我的要求. 我已经读到在实施策略模式时使用“switch"语句是一个危险信号.但是,我似乎无法摆脱在此示例中使用 switch 语句的情况.我错过了什么吗?我能够从 Pencil 中删除逻辑,但是我的 Main 现在有一个 switch 语句.我知道我可以轻松创建一个新的 TriangleDra ..

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

我终于开始使用依赖注入(早该)了;我开始使用 Unity 并遇到了策略模式的问题.我可以使用容器返回给我基于名称的策略的特定实现,但我没有看到我应该如何在上下文中获得正确的策略. 让我们用一个简单的例子来说明:上下文是一辆汽车,它有一个 IEngine(策略),有 2 个实现,FastEngine 和 SlowEngine.代码将沿着以下几行: 公共接口IEngine{双倍最大速度{得到;}} ..

策略与桥接模式

我知道之前有人问过这个问题(例如,桥接模式和策略模式有什么区别?). 但是,有人可以用清晰的例子解释一下有什么区别以及在什么情况下必须选择一个而不是另一个吗?更少的概念理论,更实际的“现实生活"场景将不胜感激. 解决方案 桥接模式区分抽象和实现,使两者可以独立变化.我将使用 中的示例 Java 中的模式,第 1 卷:使用 UML 说明的可重用设计模式目录,第二版 您需要提供 ..
发布时间:2021-12-22 08:59:39 其他开发

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

我尝试阅读关于 dofactory、维基百科和许多网站的许多文章.我不知道桥接模式和策略模式之间的区别. 我知道它们都将抽象与其实现分离,并且可以在运行时更改实现. 但我还是不知道在什么情况下应该使用策略,在什么情况下应该使用桥牌. 解决方案 语义.来自维基百科: 策略的 UML 类图模式与图表相同桥模式.然而,这两设计模式在他们的意图.虽然战略模式是为了行为,桥接模式是 ..
发布时间:2021-12-22 08:58:58 其他开发

策略模式和依赖注入有什么区别?

策略模式和依赖注入都允许我们在运行时设置/注入对象.策略模式和依赖注入有什么区别? 解决方案 DI 和 Strategy 的工作方式相同,但 Strategy 用于更细粒度和短期的依赖项. 当对象配置了“固定"策略时,例如在构造对象时,策略和 DI 之间的区别变得模糊.但在 DI 场景中,对象的依赖关系在其生命周期内发生变化的情况更为罕见,而这在 Strategy 中并不少见. ..

工厂模式和策略模式有什么区别?

谁能解释工厂模式和策略模式之间的区别? 对我来说,除了额外的工厂类(在工厂模式中创建产品对象)之外,两者看起来都一样 解决方案 工厂模式是一种创建模式.策略模式是一种操作模式.换句话说,工厂模式用于创建特定类型的对象.策略模式用于以特定方式执行一个操作(或一组操作).在经典示例中,工厂可能会创建不同类型的动物:狗、猫、老虎,而策略模式将执行特定操作,例如移动;使用跑步、步行或 Lop ..

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

策略设计模式和状态设计模式有什么区别?我在网上浏览了很多文章,但无法清楚地区分. 有人可以解释一下外行术语的区别吗? 解决方案 老实说,这两种模式在实践中非常相似,它们之间的定义差异往往会因您问的对象而异.一些流行的选择是: 状态存储对包含它们的上下文对象的引用.策略没有. 状态可以替换自己(即:将上下文对象的状态更改为其他状态),而策略则不能. 策略作为参数传递给上下文对 ..
发布时间:2021-12-22 08:52:44 其他开发

使用带有依赖注入的策略和工厂模式

我正在做一个辅助项目,以更好地理解控制反转和依赖注入以及不同的设计模式. 我想知道是否有在工厂和策略模式中使用 DI 的最佳实践? 当策略(从工厂构建)需要为每个可能的构造函数和实现提供不同参数时,我的挑战就出现了.结果,我发现自己在服务入口点中声明了所有可能的接口,并将它们传递给应用程序.因此,必须为新的和各种策略类实现更改入口点. 为了说明目的,我整理了一个配对的示例.我的这 ..

策略模式是如何工作的?

它是如何工作的,它的用途是什么以及何时应该使用它? 解决方案 让我们简单地解释一下策略模式: 您有一个带有方法 run() 的类 Car(),因此您可以在伪语言中以这种方式使用它: mycar = new Car()mycar.run() 现在,您可能希望在程序执行时动态更改 run() 行为.例如,您可能想要模拟电机故障或在视频游戏中使用“加速"按钮. 有几种方法可以进行 ..
发布时间:2021-12-22 08:43:12 其他开发

何时使用 C++ 私有继承而不是组合?

你能举一个具体的例子,什么时候最好使用私有继承而不是组合?就个人而言,我将使用组合而不是私有继承,但在某些情况下,使用私有继承可能是特定问题的最佳解决方案.阅读 C++ faq,为您提供了一个使用示例私有继承,但我似乎更容易使用组合+策略模式,甚至比私有继承更容易使用公共继承. 解决方案 private 继承通常用于表示“implemented-in-terms-of".我看到的主要用途是 ..

将 if-else 修改为策略模式

我在 java 中有以下 if-else 分支. if (str.equals("a")) { A;}否则 if (str.equals("b")) { B;}否则 if (str.equals("c")) { C;}else if (str.length == 5) { D;}否则{ E;} 如何将这段代码修改成策略模式? 解决方案 以下是使用工厂的策略模式示例: 公共接口策略{ ..
发布时间:2021-12-12 14:11:25 Java开发

在 C# 中执行此通用抽象类的最佳方法是什么?

我知道我做得不对,但我也知道有一种方法可以做到这一点.我正在尝试尽可能通用和抽象,否则我的代码会变得非常混乱.所以我在这里也使用了策略模式,即 GetAggregateClient() 方法. 我想要一个名为 AbstractAggregate 的抽象类,以便它使用泛型.泛型类型将是一系列数据类(BlogItem、ResourceItem 和 AskItem),它们都继承自 ListItem ..
发布时间:2021-11-26 17:16:05 C#/.NET

策略模式的真实世界示例

我一直在阅读 OCP 原则 以及如何使用该策略模式来实现这一点. 我打算尝试向几个人解释这一点,但我能想到的唯一示例是根据“订单"的状态使用不同的验证类.是. 我在网上阅读了几篇文章,但这些文章通常没有描述使用该策略的真正相似原因,例如生成报告/账单/验证等... 在现实世界中,您是否认为战略模式很常见? 解决方案 关于这个: 您必须加密文件. 对于小文件,您 ..
发布时间:2021-11-25 14:10:59 Java开发

在 C# 中执行此通用抽象类的最佳方法是什么?

我知道我做得不对,但我也知道有一种方法可以做到这一点.我正在尝试尽可能通用和抽象,否则我的代码会变得非常混乱.所以我在这里也使用了策略模式,即 GetAggregateClient() 方法. 我想要一个名为 AbstractAggregate 的抽象类,以便它使用泛型.泛型类型将是一系列数据类(BlogItem、ResourceItem 和 AskItem),它们都继承自 ListItem ..
发布时间:2021-11-25 09:46:52 C#/.NET

使用多个提供程序的客户端应用程序使用什么设计/模式?

这是一个与设计相关的问题. 假设我们有一个名为 ClientAPI 的公共 API,其中包含一些 Web 方法,例如 CreateAccount、GetAccount.根据客户的不同,我们使用许多不同的供应商来满足这些要求. 假设我们有 ProviderA、ProviderB 和 ProviderC. ProviderA 有一个 CreateAccount 的方法签名/实现,它只 ..

unity 解析多个类

如何让 microsoft unity 为给定的接口类型“构建"一个类列表. 非常简单的例子: Listlist = new List();list.Add(new NewYorkShippingCalculation());list.Add(new FloridaShippingCalculation());list.Add(new AlaskShippingCalculation() ..
发布时间:2021-09-14 19:39:26 C#/.NET

php百分比机会

这实际上更多是一个方法问题,但我是在 php 中提出的. 假设我们有一个包含四个百分比的列表,一个给定事件将在迭代中发生. array=('遛狗'=>.25,'读报纸'=>.25,'喝咖啡'=>.0,'听音乐'=>.50) (键只是测试 - 在实践中,这将用于策略模式,使用 call_user_func() 将不同的方法应用于偶然的对象) 在一个循环中,通过随机调整选择考虑到它们各 ..
发布时间:2021-06-21 19:35:54 PHP

如何在 Objective-C 中创建策略模式?

我需要开发一个策略模式,其中我有一个主类和其他三个类,我需要使用主类对象来引用其他三个类的对象.解决这个问题的策略模式对我有帮助吗?如果是这样,请给我 Objective-C 中的语法? 解决方案 你会想看看 Objective-C 的 protocol 机制.这是一个带有单个必需方法的简单协议: @protocol 策略 @必需的-(无效)执行;@结尾 然后声明一个满足该协议的类: ..
发布时间:2021-06-11 20:04:07 移动开发