领域驱动基础知识点
核心域
:是业务系统的核心。
通用域
:是为整个业务系统提供支持服务。
支撑域
:是专注于业务系统的某一重要业务,支撑完善业务系统。
统一语言
:便于交流,方便设计。
语言中的动词
,【付款、下单
】可以转换为命令或领域事件
语言中的名词
,【商品、订单
】有时可以直接转换为代码中的模型、聚合、服务边界
举例:
电商系统:
销售子域:核心域
商品子域,物流子域:支撑域
领域服务
:表述领域行为,是对应用服务的具体细分,具体的某一个环节
应用服务
:表述应用行为,具体操作,从开始到结束的每个环节
比如购物车结算 就是一个应用行为,其中包含了:【价格计算,支付,生成订单等】
其中 支付、生成订单 就是应用服务中的某个领域服务
聚合根
:为避免复杂数据模型缺少统一的业务规则限制,导致实体之间数据不一致的问题。
实体
: 在领域模型中,都是转换为实体,聚合根也是一个实体。
值对象
:模型中不可变的值就是属于值对象的一种定义,【比如pms中的商机编号,或表中的ID】
比如客户地址也属于值对象。
【值对象的概念
:不可更改的值,如有变动只能摧毁重建,且不能有多条,不需要ID标识唯一性】
比如:客户地址是值对象,如果客户地址有多个地址,则地址应设计为实体,不属于值对象
在使用DDD
创建系统:
第一步:头脑风暴,会议讨论定义领域。
例:
第二步:设计实体和聚合。