1

我想我理解值对象(它们没有概念标识,它的属性集是它的定义等)以及它们与Entities的不同之处,但我仍然对原始类型的值(intstring ...)是否感到困惑直接分配给Entity的属性也被视为VO

例如,在下面的代码中,Name分配给的对象(类型)Person.NameVO,但值是否分配给Person.FirstNamePerson.LastNamePerson.Age被认为是VO

public class Person
{
    public string FirstName = ...
    public string LastName = ...
    public int Age = ...

    public Name Name = ...
               ...
} 

public class Name
{
    public string FirstName = ...
    public string LastName = ...
    public int Age = ...
}

谢谢你

4

2 回答 2

3

一个值是原始类型(例如stringor int)还是由原始类型组成的复杂类型(例如Name)都没有关系。重要的是您将其视为没有任何身份的单纯“价值”——那么它就是一个价值对象。

将其保留为原语或将其包装在类中的决定是实现细节。与原始类型相比,特定类型在未来更容易扩展/添加功能。

于 2012-07-12T05:28:02.287 回答
1

检查这个相关问题......值对象更像是一个“概念”对象的实现......如果你考虑一下,单例和享元模式是将具有标识的对象转换为值对象以进行优化.. . 它也与选择实现可变或不可变的东西有关。你总是可以说 Person 是不可变的,但一段时间后,你是一个具有不同属性的“新”人。这是一个实施决策,而不是领域或概念决策。(不可变的事物往往是价值对象,而可变的事物往往是身份对象)。

于 2012-07-11T21:55:03.627 回答