用例中的 Java 泛型 VS 带枚举的标准类型

问题描述 投票:0回答:1

在 Java Spring Boot DDD 项目中,我们公开了几个 API。

现在对于这些 API 中的一个,我们需要“Token”实体包含一个属性:“Locales”。

在使用没有“Locales”的“Token”的用例中,我不希望可以访问该新属性的 getter。 为此,我正在考虑两种选择:

  • 将“Locales”添加到“Token”实体以及另一个“Type”属性(枚举) 那,取决于它是一种类型还是另一种类型,什么时候 访问“Locales”getter,返回元素或 Optional.Empty(或异常)。这样只有用例是 对于“LocalizedToken”将获得“Locales”,但在我的 认为界面不太清晰,可能会发生更多错误 使用并非真正在所有 API 中使用的属性。
  • 用“LocalizedToken”实体扩展“Token”并制作使用每个的用例 暴露的 API 只能访问它需要的类型。例如,与 泛型,创建用例:
    CreateTokens<T extends Token>
    。这 选项看起来更干净,但需要进行更多修改,因为这些 泛型遍布整个域、存储库等

您认为哪种方法最好?或任何其他建议?

谢谢!

java domain-driven-design
1个回答
0
投票

我不建议为此使用枚举。通常,在使用枚举时,您很想切换枚举类型来执行某些操作或返回响应。如果您稍后决定另一种类型的

Token
是一个选项,则需要更新所有现有代码。这违反了开闭原则。

© www.soinside.com 2019 - 2024. All rights reserved.