相关疑难解决方法(0)

DDD中的值对象 - 为什么不可变?

我不明白为什么DDD中的值对象应该是不可变的,我也不知道如何轻松完成.(如果重要的话,我专注于C#和实体框架.)

例如,让我们考虑经典的Address值对象.如果你需要改变"解放路123号"到"123主 ",我为什么要需要构建一个全新的对象,而不是说myCustomer.Address.AddressLine1 ="123大街"的?(即使实体框架支持结构,这仍然是一个问题,不是吗?)

我理解(我认为)价值对象没有身份并且是域对象的一部分的想法,但有人可以解释为什么不变性是一件好事吗?


编辑:我在这里的最后一个问题应该是"有人可以解释为什么不变性是适用于价值对象的好东西吗?" 对困惑感到抱歉!


编辑:为了clairfy,我不是在询问CLR值类型(与引用类型相比).我问的是价值对象的更高级DDD概念.

例如,这里是实现不可变的值类型实体框架劈上下的方式: http://rogeralsing.com/2009/05/21/entity-framework-4-immutable-value-objects.基本上,他只是让所有的安装者都私密.为什么要经历这样做的麻烦?

domain-driven-design value-objects

33
推荐指数
4
解决办法
1万
查看次数