DDD中实体对象和值对象的区别困惑?
[该贴被dongnan99于2010-01-27 17:44修改过]
就象一个单位,你不能改变单位中某个人或事物,但是你可以更换另外一个单位合作。
如果值对象和实体发生关系,一般从属于这个实体,作为实体来讲,你可以更换另外一个值对象作为你的新值对象,就是可以更换关系,但是不可以更换值对象内部值。
如果觉得抽象的话 请用DNA来理解
每个碱基(DNA由“jian”基组成,具体哪个"jian"忘了)就是值对象,而拼凑成的DNA为实体,而且这个实体是唯一的,我们把他当作每一个人。
有一个大前提,就是当你关心到人的时候,这个世界上每一个人就是实体,而组成这个世界上所有的人的“jian”基就是值对象了。
那 这么看来 每一个人(事实)都由“jian”基(事物)所组成了。
能否举例呢?
我是这样理解的,不晓得正确否:
Person PA=new Person("A");//entity(PA)的名字叫A
使用过程中,我们想要用到A这个人时,我们就直接通过实体PA来调用。
当我们要到B这个人时,
我们不是通过PA.setName("B")来呼叫B。而是
Person PB=new Person("B"),或者PA=new Person("B")来实现。
如果只是表述这个意思的话,那我觉得大家过度关注这个就是没找到主要矛盾了。因为平时大家就是那样写代码的。很少会去setName("B")。
这样理解对么?