我正在努力实现实体和价值对象的概念。 我已经阅读了实体和值对象之间的差异,但我无法将知识转移到我的示例中。
我想创建一个aggreagte"零售商"
零售商具有属性" id"," name"," adress" (街道,ZIP,国家)和 GPS坐标(纬度,经度) 我的"聚合根"是有权的"零售商"。
这里的价值对象是什么,权利的属性是什么? 地址是实体的属性吗?零售商"或是"地址"一个价值对象? 是" GPS"一个值对象本身或值对象的属性"地址"?
组织这个有用的方法是什么?我在项目中添加了一个如何组织的示例。将地址添加到值对象的价值是什么,而不是将其作为属性添加到权利"零售商"?
答案 0 :(得分:1)
这里的价值对象是什么,权利的属性是什么?地址是实体的属性吗?零售商"或是"地址"一个价值对象?是" GPS"一个值对象本身或值对象的属性"地址"?
它既是属性又是value object
:属性来自面向对象的观点;从DDD的角度来看value object
:带有行为的数据,不可变。
GPS
应该是包含latitude
和longitude
原始值的值对象。
将地址添加到值对象的价值是什么,而不是将其作为属性添加到权利"零售商"?
优势在于value object
封装其所有数据和行为,从中删除其父实体的职责。此外,它更直观地表达了这样一个事实,即它的属性只有一起有意义(纬度和经度应该总是一起设置)。