多个聚合处理一个table?

Multiple aggregates handle with one table?

我们正在为订单系统建模,我们有订单概念。订单有一个从创建到交付的生命周期,在它们之间订单可以处于其他状态。一些状态具有特定的业务逻辑,有时共享其他业务逻辑,例如如果订单未按时完成,则该订单何时可以在具体日期过期。

嗯,团队怀疑

  1. 使用状态模式(一个聚合,一个存储库),或者
  2. 使用一个 aggregate/repository 来处理订单的每个状态。

在第二种方法中,我们正在考虑对每个存储库使用相同的 table,以便对每个聚合使用 table 订单 persist/load。 从DDD的角度来看很好看?

你怎么看?

总的来说,DDD 就是要避免因基础设施问题而污染领域;不同的聚合是否存储在同一个 table 中是一个基础设施问题。只要repository/repositories能够履行自己的义务,就去做吧。

就是说,就哪些操作是合法的以及各州之间可用的信息而言,拥有一个订单有很多变化可能是一个迹象,表明将这些状态分配给不同的有界上下文(例如将项目添加到订单的上下文(例如购物车上下文)、checkout/payment 上下文、用于交付上下文的组件和正在交付的上下文。