小编Chr*_*ilt的帖子

DDD结构示例

我正在尝试使用 DDD 和洋葱/六边形/干净架构(使用 Java 和 Spring)构建应用程序。我发现找到有关概念本身的指导比实际如何实施它们更容易。特别是 DDD 似乎很难找到有指导意义的例子,因为每个问题都是独一无二的。我在 SO 上看到了很多有用的例子,但我仍然有疑问。我想知道通过我的例子是否会帮助我和其他任何人。

我希望你能原谅我在这里问了不止一个问题。这个例子似乎太大了,我在多个问题中重复它没有意义。

语境:

我们有一个应用程序,它应该显示有关足球统计数据的信息,并具有以下概念(为简单起见,我没有包括所有属性):

  • 拥有众多球员的团队。
  • 球员。
  • 夹具,有 2 个团队和 2 个半场。
  • Half,其中有 2 个 FormationsPlayed 和许多组合。
  • FormationPlayed,其中有很多 PositionsPlayed。
  • PositionPlayed,它有 1 个玩家和一个位置值对象。
  • 组合,可以是2种类型,并且有很多Move。
  • Move 可以有 2 种类型,有 1 个 Player 和一个事件值对象。

可以想象,试图找出哪些事物是聚合根是很棘手的。

  • 团队可以独立存在,AR 也是如此。
  • Player 可以独立存在,AR 也是如此。
  • Fixture 在删除时也必须删除它的 Halves,AR 也是如此。
  • Half 必须是 Fixture 中的实体。
  • 删除一半时必须删除FormationPlayed,所以也许这应该是Half中的一个实体。
  • 当一个 Formation 被删除时,PositionPlayed 必须被删除,所以相信这应该是 FormationPlayed 中的一个实体。
  • 某种意义上的组合可以独立存在,尽管与特定的游戏半场相关。也许这可能是一个受最终一致性约束的 AR。
  • 当一个组合被删除时,移动必须被删除,所以相信这应该是组合中的一个实体。

问题:

  1. 你看到上面的设计有什么错误吗?如果是这样你会改变什么?
  2. Fixture - Half - FormationPlayed - PositionPlayed 聚合似乎太大,所以我想知道您是否同意可以使用最终一致性将其拆分为 Fixture - Half 和 FormationPlayed - PositionPlayed。我找不到一个例子是这是如何在 …

java domain-driven-design eventual-consistency onion-architecture

5
推荐指数
1
解决办法
2643
查看次数