这些值也是值对象吗



我想我理解值对象(它们没有概念身份,它的属性集是它的定义等)以及它们与实体的区别,但我仍然很困惑,直接分配给实体属性的基元类型(intstring…)的值是否也被视为VO。

例如,在以下代码中,分配给Person.Name的对象(类型为Name)是VO,但分配给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 = ...
}

感谢

值是基元类型(如stringint)还是由基元类型组成的复杂类型(如Name)都无关紧要。重要的是,你认为它只是一个没有任何身份的"价值"——那么它就是一个价值对象。

决定将其保留为基元还是将其封装在类中是一个实现细节。特定类型比基元类型更容易在将来扩展/添加功能。

检查此相关问题。。。价值对象更多的是一种实现,而不是"概念"对象。。。仔细想想,singleton和flyweight模式是为了优化目的,将具有标识的对象转换为值对象。。。它还与选择实现可变或不可变的东西有关。你总是可以说人是不可变的,但过了一段时间,你就变成了一个具有不同属性的"新"人。这是一个实施决策,而不是一个领域或概念决策。(不可变的东西往往是值对象,可变的东西是身份对象)。

相关内容

  • 没有找到相关文章

最新更新