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

DDD建模,聚合根之间的相互作用

如何解决《DDD建模,聚合根之间的相互作用》经验,为你挑选了1个好方法。

替代文字 用1; 2; 3标记我的聚合根.看起来很不错 - 几乎像葡萄.

替代文字

我不喜欢的是一个用红色箭头标记的实体.

让我们想象一下:

AR#1是公司

AR#2是办公室

AR#3是员工

标有红色箭头的实体被命名 Country

公司制定雇用员工的国家的规则(在招聘时,company.Countries.Contains(employee.Country)必须是真实的)

我以某种方式看到这个域中非常不重要的部分(也许它听起来不像这个例子中的那个),我想避免促使Country聚合root.

关于聚合根的术语表说:

可以传递对内部成员的瞬时引用,以便仅在单个操作中使用.

那么 - 是否会引入类似"EmployeeCountry"的内容,删除对公司Country的引用,并检查Employee国家/地区是否与招聘操作中的任何公司国家匹配听起来合理?

还有其他想法吗?

我怎样才能让我的葡萄看起来像他们应该的样子?



1> Jeff Sternal..:

在这种情况下,Country它只是一个价值对象,而不是一个实体 - 更不用说聚合根 - 所以没有理由改变你的设计(没有更多的信息).

另外,请注意您引用的警告属于聚合根的内部成员,而不是聚合本身.在多个位置维护对聚合的引用没有任何问题.聚合根应该封装子对象,以便有一个地方可以为相关对象强制执行业务规则.

你可以在埃文斯的"领域驱动设计"(又名" 蓝皮书 ")中的几个地方清楚地看到这一点.例如,请参见第127页的图(在聚合根的介绍中),该图显示了一个Car聚合,它引用了Engine聚合.

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