当前位置: 首页 > news >正文

DDD领域驱动开发第2讲:领域驱动开发在货代订单业务的实践

领域驱动开发在货代订单业务的实践

本文是DDD领域驱动开发第2讲,先讲解当前业务存在哪些问题,什么是DDD,为啥需要使用DDD解决现有业务问题,DDD让技术主动理解业务,通过领域模型将可以描述各个业务领域之间的关系,最后讲解领域驱动开发在货代订单的实践。

文章目录

  • 领域驱动开发在货代订单业务的实践
    • 1、什么是DDD
      • 1.1、模型驱动设计
        • 1、实体(Entity)
        • 2、值对象(ValueObject)
    • 问题1:实体和值对象的区别?
        • 3、聚合(Aggregate)
        • 4、聚合根(Aggregate Root)
        • 5、界定上下文(Bounded Context)
        • 6、领域服务(DomainService)
        • 7、工厂(Factory)
        • 8、资源库(Repository)
    • 2、为什么要用DDD?
      • 2.1、DDD解决什么问题?
      • 2.2、DDD的优势
    • 3、如何实现DDD?
      • 3.1、战略设计
        • 1、领域划分
        • 2、四色建模
        • 3、事件风暴(Event Storming)
      • 3.2、战术设计
        • 1、分层架构
        • 2、事件驱动架构
        • 3、CQRS
        • 4、贫血模型/充血模型
    • 4、总结
    • 5、领域驱动开发在货代订单的实践
      • 5.1、划分领域
      • 5.2、提炼模型对象及行为
      • 5.3、梳理链路及改造
      • 5.4、改造难点
      • 5.5、DDD落地
    • 6、项目代码及测试用例
    • 参考

1、什么是DDD

DDD(Domain-Driven-Design)是一种强调将业务知识与软件设计紧密结合的一种软件设计思想,是一种适合构建复杂软件系统的思想及方法论,并不是一套现成的软件开发框架。

我的理解:用面向业务领域对象的思维构建代码,而不是传统的基于底层表结构来构建代码,核心是构建统一的业务领域模型,本质是面向对象(业务领域对象)的思想

为什么要建模

  • 在业务、运营、产品、开发、测试之间构建统一的业务语言,方便理解业务,降低沟通成本;
  • 将业务拆分成一个个小的,且相互关联的领域模型,能更好的应对业务的改变和扩展。

软件是对现实世界的建模

相关文章:

  • 爬虫获取的数据能用于哪些数据分析?
  • 基本控制环节的幅频和相频特性
  • 期权帮|场外个股期权杠杆与风险分析
  • Vue 3 30天精进之旅:Day 29 - 项目实战
  • 拦截器VS过滤器:Spring Boot中请求处理的艺术!
  • 深入解析NoSQL数据库:从文档存储到图数据库的全场景实践
  • 了解几个 HTML 标签属性,实现优化页面加载性能
  • HTML/CSS中后代选择器
  • 目标跟踪(Object Tracking) vs. 目标识别(Object Recognition)
  • 【基础架构篇十五】《DeepSeek权限控制:RBAC+ABAC混合鉴权模型》
  • 第十篇:电源设计的“能量矩阵”——无线充电与碳化硅LLC谐振
  • 一文读懂Docker之Docker Compose
  • ARM64 Trust Firmware [五 ]
  • 什么是 BFC
  • 实现历史数据的插入、更新和版本管理-拉链算法
  • Aseprite详细使用教程(14)——像素画明亮画法
  • 机器学习小项目之鸢尾花分类
  • A-LOAM源代码解析(一)
  • 6121A 音频分析仪
  • Vue的双向数据绑定和React的单向数据流在处理对象数组时的行为
  • 3月中国减持189亿美元美债、持仓规模降至第三,英国升至第二
  • 霍步刚任辽宁沈阳市委书记
  • 广西百色“致富果”:高品质芒果直供香港,带动近五千户增收
  • 中国情怀:时代记录与家国镜相|澎湃·镜相第三届非虚构写作大赛暨七猫第六届百万奖金现实题材征文大赛征稿启事
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元
  • 泽连斯基抵达安卡拉,称乌将派出最高级别代表团参与谈判