记录一次DDD领域驱动设计落地实践

本文分享了作者在实习期间如何在实际项目中应用领域驱动设计(DDD),通过战略设计确定业务界限和优先级,事件风暴定义业务名词,再到战术设计构建领域模型,包括价值对象、实体、聚合根、领域服务和应用服务等关键概念。
摘要由CSDN通过智能技术生成

DDD落地实践

记录 实习期间 参与项目的领域驱动设计落地

以下记录主要以本人开发的取号模块为例,每个阶段的目标不同,而每个阶段和上一阶段有着紧密的联系。

DDD几部曲

战略设计

重业务。深刻认识业务,根据业务划分限界上下文(业务边界),理清不同业务之间的优先级,实现上下文的分类。

在这里插入图片描述

事件风暴。梳理出业务中相关名词。例如预防接种流程中的(取号单、取号机、取号用户信息、取号设置、排号队列、排号规则、工作台、叫号、重叫、过号、完成、异常完结、叫号设置、外设)

统一名词。项目相关人员对同一名词达成一致理解。同时利用这些名词作为后续设计的指导。

战术设计

重实现。根据限界上下文和事件风暴中得出的统一名词,构建领域模型。

理清重要概念(以落地的六边形架构为例):

  1. 值对象:没有业务表达,没有唯一标识,只是数据载体,值不同则值对象不同【取号用户信息(其中包含预约信息)】

  2. 实体:具有唯一标识的,内聚属性校验【取号单(取号单id)、取号设置(取号设置id)】,也对应到了数据库表

  3. 聚合根:一组相关对象集合,作为整体被外部访问,有业务表达(领域中只有一个实体,那这个实体本身就是聚合根)【取号机(动作-生成取号单;保存/查看取号设置)】

  4. 领域服务:整个领域的行为【生成取号单的行为、保存/查看取号设置的行为】

  5. 应用服务:组合多个领域服务数据,为领域服务组装数据【拿到防腐层中调用的外部服务数据-用户基本信息(数据中心)、预约信息(预约服务)】,不体现。应用服务之间没有相互依赖

  6. 防腐层:作为对接外部的接口,从外部服务获取数据【领域层的external包中的接口,对应external模块中的接口实现,其实现中注入了外部服务,通过接口与外部服务解耦】

领域建模

在这里插入图片描述
to be continue…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值