theme: channing-cyan
这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战
一、定义
作用
- 统一思想,统一项目各方业务、产品、开发对问题的认知,而不是开发和产品统一,业务又和产品统一从而产生分歧。
- 明确分工,域模型需要明确定义来解决方方面面的问题,而针对这些问题则形成了团队分工的理解。
- 反应变化,需求是不断变化的,因此我们的模型也是在不断的变化的。领域模型则可以真实的反映这些变化。
- 边界分离,领域模型与数据模型分离,用领域模型来界定哪些需求在什么地方实现,保持结构清晰。
建模方式
- 用例分析法,是领域建模最简单可行的方式。大致可以分为获取用例、收集实体、添加关联、添加属性、模型精化几个步骤。
- 四色建模法,核心关注某个人的角色在某个地点的角色用某个东西的角色做了某件事情
- 事件风暴法,核心关注谁在何时基于什么做了什么,产生了什么,影响了什么事情。
事件风暴建模过程
DDD领域建模通常采用事件风暴,通常采用用例分析、场景分析和用户旅程分析等方法,通过头脑风暴列出所有可能的业务行为和事件,然后找出产生这些行为的领域对象,并梳理领域对象之间的关系,找出聚合根,找出与聚合根业务紧密关联的实体和值对象,再将聚合根、实体和值对象组合、构建聚合。
- 事件风暴找出实体和值对象
- 找出聚合根
- 找出聚合
- 对象引用和依赖关系
- 分析领域提供的服务,领域不能提供的,就放在领域聚合服务
- 分析领域事件
二、建模过程
一、用例分析:
- 客户进入系统,填写个人基本信息,地址信息,联系方式,完成系统用户创建。
- 客户进入投保管理页面,添加投保人信息(基本信息,地址信息),创建了一个投保人,添加被保人信息(基本信息,地址信息),创建了被保人。
- 客户进入投保页面,选择被保人,投保人,选择保险产品,产生了一份保单以及保单保障范围(标的)。
二、实体,值对象:
客户,地址,基本信息,联系方式,投保人,被保人,系统用户,保险产品,保单,标的
三、找出聚合根
- 保单
- 系统用户
- 客户
四、找出聚合
- 投保聚合:保单,投保人,被保人,标的
- 客户聚合:客户,基本信息,地址,联系方式
- 系统用户聚合:系统用户
五、分析领域依赖
投保人和被保人本身就是客户,但跨领域依赖于投保聚合。
三、核心概念
实体、值对象、聚合、聚合根、领域服务、领域事件