我正在尝试使用 DDD 和六边形架构将整体式应用程序重写到模块化整体式应用程序上。首先尝试提取三个模块(聚合):“Shared”、“User”和“Article”。
据我正确理解,“用户”和“文章”之间不应创建任何依赖关系。但是,它们都可以使用“共享”模块中的内容。
所以事情是这样的......
“文章”模块具有 Article
实体,该实体与 User
实体相关。从 DDD 的角度来看,它是特定文章的创建者。将会有更多类似的模块与 User
实体作为资源的作者或所有者相关。
应该如何实施?是否应该将其移至“共享”?不幸的是,找不到任何特定的资源。 Github 主要包含具有单个聚合的项目,并且没有诸如 User
实体之类的项目。
我一直在寻找解决此类问题的不同方法。你可以创建一个共享聚合,没有人可以说这是错误的。但是,我认为最好的解决方案是您创建一个 Person (或 People)聚合,其中您可以有一个与 ArticleEntity 相关的 PersonEntity (或 AuthorEntity),聚合之间的关系没有问题,但我建议您尝试仅在聚合之间创建关系根。
这是 Eric Evans 蓝皮书的样本
请注意,Voyage 是 Aggregate Voyage 中的 AggregateRoot,它与 Location 聚合的 AggregateRoot Location 存在关系。