Domain driven design 使用一个实体和值对象创建聚合

Domain driven design 使用一个实体和值对象创建聚合,domain-driven-design,Domain Driven Design,我正在与实体和价值对象的概念作斗争。 我已经阅读了实体和值对象之间的差异,但我无法将知识转移到我的示例中 我想创建一个aggreagte零售商 零售商具有id、name、address Street、ZIP、Country和 GPS坐标纬度、经度 我的聚合根是实体零售商 这里的值对象是什么?实体的属性是什么? 地址是实体零售商的属性还是价值对象? GPS是价值对象本身还是价值对象地址的属性 什么是有效的组织方式?我添加了一个在我的项目中如何组织的示例。将地址添加到值对象而不是将其作为属性添加到实

我正在与实体和价值对象的概念作斗争。 我已经阅读了实体和值对象之间的差异,但我无法将知识转移到我的示例中

我想创建一个aggreagte零售商

零售商具有id、name、address Street、ZIP、Country和 GPS坐标纬度、经度 我的聚合根是实体零售商

这里的值对象是什么?实体的属性是什么? 地址是实体零售商的属性还是价值对象? GPS是价值对象本身还是价值对象地址的属性

什么是有效的组织方式?我添加了一个在我的项目中如何组织的示例。将地址添加到值对象而不是将其作为属性添加到实体零售商的价值是什么

这里的值对象是什么?实体的属性是什么?地址是实体零售商的属性还是价值对象?GPS是价值对象本身还是价值对象地址的属性

它既是一个属性又是一个值对象:一个属性是从面向对象的角度来看的;从DDD的角度来看,值对象:具有行为的数据,不可变

GPS应该是包含纬度和经度基本值的值对象

将地址添加到值对象而不是将其作为属性添加到实体零售商的价值是什么


其优点是,值对象封装了其所有数据和行为,从而消除了其父实体的责任。而且它更直观地表达了这样一个事实,即它的属性只有在一起才有意义纬度和经度应该始终设置在一起。

在自己的价值对象中对零售商的名称进行建模有意义吗?我认为这没有意义,因为名称是mutable@Johanna可能不是因为它没有特殊的行为。@Johanna它是如何改变的很重要。你能给我一个例子,说明在价值对象地址或GPS中的特殊行为是什么吗?那对我真的很有帮助。我不是开发人员。值对象代表可变对象,如地址、坐标、货币等。另一方面,实体是可变对象,如您提到的零售商,其地址可以更改等。聚合只是一个逻辑概念,是一个实体/值对象的集群。您甚至可以有一个由值对象组成的聚合,一个不可变的聚合。。。在某些国家,发票是不可变的,因此它是不可变的总和。