(1). 引言

DDD的战略设计知识,来源于:极客时间和(https://www.cnblogs.com/sheng-jie/p/6931646.html) DDD的战术设计知识来源于:https://github.com/citerus/dddsample-core.git

(2). DDD中的实体

DDD中要求实体是唯一的且可持续变化的.意思是说在实体的生命周期内,无论其如何变化,其仍旧是同一个实体.唯一性由唯一的身份标识来决定的.可变性也正反映了实体本身的状态和行为.
重要的术语:
唯一标识(区分唯一性) 可变性(实体本身的状态和行为)

(3). 案例分析

当顾客从购物车点击结算时创建订单,初始状态为未支付状态,支付成功后切换到正常状态,此时可对订单做发货处理并置为已发货状态.当顾客签收后,将订单关闭.
订单状态:未支付状态/正常状态/已发货状态/订单完成状态,我们需要定义一个状态属性.
订单行为:创建/支付/发货/关闭,针对这些行为:我们可以在实体中定义方法或创建单独的领域服务来处理.
实体既然存在状态和行为,就必然会与事件有所牵连.比如订单支付成功后,需要知会商家发货.这时我们就要追踪订单状态的变化,而追踪变化最实用的方法就是领域事件.

(4). 总结

实体作为领域建模的工具之一,唯一的身份标识是实体最基本的特征,其次是可变性.唯一身份标识和可变性也是用来区分实体和值对象的主要特征.
为了正确建立实体模型,我们需要将关注点从数据转向领域,从业务模型中提炼通用语言,再基于通用语言分析其状态和行为.
所以,总结一句话就是: 实体 = 唯一身份标识 + 可变性【状态(属性) + 行为(方法或领域事件或领域服务)】