0

我正在尝试以 DDD 方式构建应用程序。想象一下聚合根是一个“页面”,其中包含其他聚合,例如作者、评论者、评论、状态等......

页面还可以有各种设置,例如:

  • 私人页面
  • 允许评论
  • 允许匿名评论
  • x 日期后锁定
  • 蛞蝓

我正在尝试考虑对这些“设置”进行建模的最佳方式。目前我正在寻找一个将每个单独的设置作为值对象的设置集合。如您所见,其中一些本质上是布尔值,而另一些可能包含特定值,例如日期。鉴于可能有几十个设置,其中一些具有默认值,我是使用每个特定设置对“设置”集合建模,还是仅作为具有适用设置的集合建模?

有没有“更好”或标准的 DDD 方法来解决这个问题?我正在考虑在这里使用规范模式,但得出的结论是它并不真正适用

对不起,厚颜无耻的第二个问题....

一个页面可以具有多种状态之一(例如草稿、发布、计划、存档),但在给定时间只有一种状态。关于建模的最佳方法的类似问题。作为状态代表具有身份的事物,我目前已将状态实现为实体。我想知道更好的方法是将其建模为工作流还是状态历史?

4

1 回答 1

0

首先让我说您计划创建的聚合可能太大,请仔细检查,因为创建聚合意味着一些权衡,例如您只能从聚合根访问子实体,并且聚合中的所有更改都是原子。为避免聚合过大,您可以将 AuthorId 作为 Page 内的 VO 而不是完整的 Author 实体。

关于设置,据我所知,DDD 没有一些指令来设计它。但我会尝试让一些接口的设置集合,我会对每种设置类型都有一个实现:布尔值,日期......

于 2021-01-01T13:23:08.157 回答