《手把手教你落地 DDD》 Day2 核心概念之值对象

291 阅读1分钟

值对象指的是没有唯一标识,不可修改的领域对象,可以具有内部属性,作为一个整体呈现。 值对象按照不同的分类方式可以分为:

1)原子值对象 vs 复合值对象(按照对象组成分)
2)独立的值对象 vs 依附于实体的值对象(按照与实体的关系分)
3)可数值对象 vs 连续值对象(按照取值范围分)
4)预定义值对象 vs 非预定义值对象(按照产生方式分)

值对象和实体对象主要是从“同一性”的角度来区分,实体靠独立于其他属性的标识来确定“同一性”;而值对象靠所有属性值作为一个整体来确定“同一性”,没有脱离其他属性的单独的标识。

相比较实体对象,值对象的优点主要体现在内存和数据库布局的灵活性上以及其不变性上:

从内存布局的角度来说,实体对象必须要求共享而值对象可共享可不共享,灵活性更高,针对数据库布局,也是类似的,实体对象必须是共享的,而值对象可以嵌入到其附属的实体表中或者是自建值对象表,方式比较灵活。
从不变性的角度,值对象还具有减少编程错误、利于并发以及利于函数式编程等好处


此文章为2月Day3学习笔记,内容来源于极客时间《手把手教你落地 DDD》