DDD—快速理解聚合根、实体、值对象的区别和联系

本文探讨了DDD中的聚合根、实体和值对象。实体具有ID和生命周期,其状态由值对象描述。聚合根作为实体,其ID全局唯一,而下属实体ID在聚合根内部唯一。值对象注重值,无论类型复杂与否,如Price、Count等,通过值比较确定是否为同一对象。值对象无生命周期,仅关注值的等价性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

聚合根、实体、值对象的关系:
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;//值对象
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值