知识卡片

领域模型对象既是持久化对象又承载丰富领域行为

普通读书笔记卡 · 1977.y

内容

遵循信息专家模式,无论实体还是值对象,都应从它们拥有的数据出发判断领域行为是否分配给它们,如HourlyEmployee的payroll(Period)、Absence的isIn(Period)/isPaidLeave()、Salary的add/subtract/multiply/divide等方法,都体现了对领域行为的合理封装、避免了贫血模型。这充分证明:领域模型对象既可作为持久化对象搭建对象与关系表之间的桥梁,又能体现包含丰富领域行为在内的领域概念与领域知识。合二为一的领域模型对象定义在领域层,可被南向网关的资源库端口与适配器直接访问,无须再定义单独的数据模型对象(此处”数据模型”实指库中创建的数据表)。发散:”一个对象同时是PO又是富领域模型”是DDD持久化的核心主张——不额外造一套贫血数据对象,正是它区别于经典三层的地方。

参考来源

- 位置:《解构领域驱动设计》第19章 19.2.2(源文件:_epub-src/OEBPS/032.xhtml) - 结论依据:原文以Salary等方法证明领域模型对象兼任PO与富领域模型,无须单独数据对象。 - 原始内容:领域模型对象既可以作为持久化对象……又可以体现包含丰富领域行为在内的领域概念与领域知识……无须再定义单独的数据模型对象。