DDD—快速理解聚合根、实体、值对象的区别和联系
程序员文章站
2022-07-15 12:41:57
...
聚合根、实体、值对象的关系:
1.实体具有ID,生命周期,状态用值对象描述状态,实体通过ID进行区分是这个实体还是那个实体;
2.聚合根是实体,聚合根的ID全局唯一,聚合根下面的实体的ID在聚合根内唯一即可;
3.值对象的核心意思是值,与是否是复杂类型无关,例如Price、Count、OrderNo、CustomerAddress都是值对象;
4.值对象无生命周期,本质是一个值,通过两个值对象的值是否相同来区分是都是同一个值对象;
//聚合根
public class order{
public string ID;//值对象,订单的ID,全局唯一
public string OrderNo;//值对象
public Address CustomerAddress;//值对象
public IList<orderItem>Items;//实体集合
}
//实体
public class OrderItem
{
public String Production;//实体的主键,Order内唯一即可
public String ProductName;//值对象
public float price;//值对象
public int Count;//值对象
}
//值对象
public class Address
{
public string Province;//值对象
public string City;//值对象
public string County;//值对象
}