当前位置:  开发笔记 > 编程语言 > 正文

如何处理DDD中聚合之间的关联?

如何解决《如何处理DDD中聚合之间的关联?》经验,为你挑选了2个好方法。

我仍然围绕着DDD,我遇到的一个绊脚石是如何处理不同聚合之间的关联.假设我有一个聚合封装客户和另一个封装货件.

出于商业原因,出货是他们自己的聚合,但他们需要明确地绑定到客户.我的客户域实体是否应该有发货清单?如果是这样,我如何在存储库级别填充此列表 - 假设我有一个CustomerRepository和一个ShipmentRepository(每个聚合一个repo)?

我说'关联'而不是'关系',因为我想强调这是一个领域决策,而不是基础设施 - 我首先从模型设计系统.

编辑:我知道我不需要将表直接建模到对象 - 这就是我首先设计模型的原因.在这一点上,我根本不关心数据库 - 只是这两个聚合之间的关联.



1> Todd Smith..:

您的ShipmentRepository无法将客户数据汇总到您的货件模型中.存储库不必与表进行1对1映射.

我有几个存储库,它们将多个表组合成一个域模型.



2> krosenvold..:

我认为回答这个问题有两个层次.在一个层面上,问题是如何填充客户和货件之间的关系.我非常喜欢"填充"语义,您的货件存储库可以有一个fillOrders(List customers,....).

另一个层次是"我如何处理作为DDD一部分的非规范化域模型".而"客户"可能是他们所有人中最好的例子,因为它只是出现在很多不同的背景中; 几乎所有流程都有客户,客户的背景通常非常多样化.最多只有一半时间你对"订单"感兴趣.如果我在开始时对域名的理解是完美的,那么我永远不会制定客户域名概念.但事实并非如此,所以我总是最终制作Customer对象.我还记得3年后我认为能够制作出正确的"客户"领域模型的项目.我愿意寻找代表客户的替代和更详细的概念; PotentialCustomer,OrderingCustomer,CustomerWithOrders以及其他一些人; 对不起,名字不是更好.我还需要更多的时间;)

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有