DDD之聚合封装的最佳实践

320 阅读1分钟

1.实现关联的两种方式,一种是对象关联,另一种是 ID 关联。无论哪种方式,领域模型都是一样的,区别只是实现策略。对象关联是传统面向对象编程的常规方式,但在企业应用的场景下,通常需要可以实现懒加载的 ORM 框架的支持。ID 关联比较简单,但导致偏过程式的编程。

2.两个层面类图的区别,一个是领域层面,一个是实现层面。这反映了思维的两个层次。这种区别是理解 DDD 的一个重点。

3.为了确保不变规则不被破坏,总的原则是:聚合外部对象对非聚合根对象只能读,不能写,必须通过聚合根才能对非根对象进行访问。用到的具体技术包括用包级私权限封装构造器和方法;返回不可变列表;用聚合根创建和访问非根对象等。

4.实现示例 在实现模型里面,聚合内部,员工和技能、工作经验之间是单向的对象关联;在聚合之间,技能对象通过 skillTypeId 实现到技能类别的 ID 关联; 员工对象通过 orgId 实现到组织对象的 ID 关联,通过 postCodes(一个包含岗位代码的 List)实现到岗位的 ID 关联。 image.png

极客时间《手把手教你落地DDD》学习笔记 Day15