DDD 建模设置为值对象

问题描述

我正在尝试以 DDD 方式构建应用程序。假设聚合根是一个页面”,它具有其他聚合,例如作者、评论者、评论、状态等...

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

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

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

抱歉,第二个问题很厚脸皮......

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

解决方法

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

关于设置,据我所知,DDD 没有一些指令来设计它。但是我会尝试拥有某个接口的 Settings 集合,我会对每种设置类型都有一个实现:Boolean、date...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...