最近几年DDD(领域驱动设计 domain-driven design)概念很火,它以统一的语言来表述业务流程和技术架构,方便领域专家、技术开发交流达成共识,不失为一个复杂业务的解决之道。
我们使用DDD,在面向业务变化时首先要理解业务的核心问题,即有针对性地进行关注点分离来找到相对内聚的业务活动形成子问题域。子问题域内部是相对稳定的,即未来的变化频率不会很高,而子问题边界是很容易变化的。也就是说,DDD的核心在于领域边界的识别和划分。
比如物流系统,计算两地路径是相对固定的,但是根据包裹信息进行路径选择却常常跟随业务条件而变化。
下面我们重点来看DDD领域模型有哪些概念~
实体
具有业务属性和业务行为,携带唯一标识,带有生命周期的对象。比如将订单领域中订单抽象为一个实体,其生命周期就包括从下单到最后收货整个周期。
值对象
只具有属性信息,不携带唯一标识的对象。
聚合、聚合根
将实体和值对象组织在一起协同工作叫聚合。
聚合根也叫做根实体,聚合之间通信通过聚合根来管理,以聚合根 ID 关联的方式接受外部任务和