繁体   English   中英

应该使用什么模式,策略?

What pattern should be used, strategy?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我确实有一项服务需要处理两种类型的餐点。

@Service
class MealService {

   private final List<MealStrategy> strategies;

   MealService(…) {
       this.strategies = strategies;
   }

   void handle() {
       var foo = …;
       var bar = …;
       strategies.forEach(s -> s.remove(foo, bar));
   }
}

有两种策略,“BurgerStrategy”和“PastaStrategy”。 两者都使用一种名为 remove 的方法实现 Strategy 接口,该方法采用两个参数。

BurgerStrategy class 从数据库中检索枚举类型汉堡的餐食并对其进行迭代并执行一些操作。 PastaStrategy 也有类似的东西。

问题是,将其称为战略并以这种方式实施是否有意义?

另外,如何处理这两个服务中的重复代码,假设它们共享相同的私有方法。 创建一个 Helper class 或其他东西有意义吗?

问题暂未有回复.您可以查看右边的相关问题.
1 我们为什么要使用策略模式?

我刚刚从互联网上了解了战略模式的真正含义。 但是我想知道它如何改善我的代码。 例如,我在Internet上这样找到以下代码。 这是名为Animal的超类: 这是名为Dog的子类: 在教程中,它说是否要增加飞行能力,以便我可以检查狗是否可以飞行。 如下面的代码所示,像这样直 ...

2 我应该使用哪种加密策略

我正在建立一个笔记应用程序。 我想向我的用户保证,他们的数据在联机存储(Firebase Firestore)时是加密的,除了他们之外,其他任何人都无法读取它。 我希望该应用程序保持简单,因此(无需登录)没有密码。 我正在考虑使用crypto-js来完成这项工作。 它支持许多不同的加 ...

3 这个策略模式的python实现应该在init方法中使用私有变量吗?

我正在学习策略设计模式,以及 Python 中的属性装饰器。 我遇到了这个例子: 我理解属性方法/装饰器的方式是@property在这种情况下提供了一个用于设置属性(温度)的接口。 在__init__方法中命名属性_strategy意味着它应该是一个私有变量。 这是错误的还是多余的? 我认为这个 ...

5 如何对托管对象使用策略模式

我处理队列中的消息。 我使用传入消息中的数据来确定使用哪个类来处理消息。 例如来源和类型。 我将结合使用Origin和Type来查找FQCN,并使用反射实例化一个对象来处理消息。 目前,这些处理对象都是实现公共接口的简单POJO。 因此,我正在使用一种策略模式。 我遇到的问题是, ...

6 如何使用策略模式重构此代码?

我有很多验证。 我正在重构此代码: 我想根据执行操作的用户类型来应用不同的策略。 我想创建不同的用户的策略,但我很想念我怎么能避免所有这些if秒。 我想出了这样的东西。 但是我不确定我是否以正确的方式实施它。 ...

7 使用枚举实现策略模式

我正在尝试创建一项服务来处理不同的付款方式。 我想实施策略模式。 我想要一个具有不同付款方式的枚举。 这是我所拥有的一个例子: 客户端某处: 这种方法的问题是“支付”方法可能有很多逻辑,所以我想把它放在不同的 class 中。 我可以定义这样的接口: 客户端某处: 但我更喜欢 Enum 的外观以及保 ...

9 应该使用哪种 Django 测试策略

我正在为我的 Django 网站编写测试,我想了解测试views.py文件的实际区别(以及更好、更合适的方法)是什么。 从文档中有两种方法: 让我们称之为简单 - 在这里描述https://docs.djangoproject.com/en/3.0/topics/testing/tools/ 高级测 ...

10 策略模式

我必须为不同的客户端实现API。 每个客户的实施方式会有所不同。 因此,我正在考虑在groovy(类似于Java)中使用策略模式,在该模式中我将有一个接口,并为每个客户端创建一个类(实现一个接口),并且我想配置要使用UI调用的类(下拉菜单)。 这是最好的方法,还是可以通过将闭包用作变 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM