【发布时间】:2014-07-23 09:00:13
【问题描述】:
我刚刚读到值对象,它是不可变的并被描述为:
一个小的简单对象,如金钱或日期范围,其相等性不基于身份。
看看我目前存在的实体,我想我可以将几乎所有不是实体的东西都变成值对象。
假设我有一个实体类 User。
class User
{
public $id;
public $firstname;
public $lastname;
public $email;
}
我可以让它由值对象Id、FirstName、LastName、Email 和Password 组成,因为这些User 属性都不是基于身份的,对吧?但话又说回来,我可能会更进一步,制作更多的 VOs Int、String、Name(由 FirstName 和 LastName VOs 组成)等等。
我在哪里画线以防止过度设计?
一个域包含这么多 VO 正常吗?
我对值对象的理解是否正确?
【问题讨论】:
-
$id 可能表示该对象不是值对象,而是身份很重要的实体。
标签: entity domain-driven-design value-objects