领域驱动(DDD)的学习总结

简介: 领域驱动(DDD)的学习总结

【我有个问题】领域驱动有疑问?看这里,阿里专家为你解答!的学习活动中,通过殷浩老师的讲解和答疑,我学到了很多,对领域驱动这一方面的知识也了解了一些。


"领域驱动设计(Domain Drive Design)简称DDD,是2004年Eric Evans提出的一套软件开发的方法论,它改变了传统软件开发工程师针对数据库建模的方式,通过面向领域的思维方式,将要解决的业务概念和业务规则等内容提炼为领域知识,从而降低或隐藏业务复杂性,使系统具有更好的扩展性,以应对复杂多变的现实业务问题。"


领域驱动设计一般分为两个阶段:

  • 以一种领域专家、设计人员、开发人员都能理解的“通用语言”作为相互交流的工具,在不断交流的过程中发现和挖出一些主要的领域概念,然后将这些概念设计成一个领域模型;
  • 由领域模型驱动软件设计,用代码来表现该领域模型。领域需求的最初细节,在功能层面通过领域专家的讨论得出。


在领域驱动的设计中,初初我是对其切入点有些疑惑,首先我们要理解领域知识,领域知识是基础,当我们知道要设计一个怎样的系统后,大概明白解决什么问题的,但这样还不够,我们还无法开始进行实际的需求分析和模型设计。这时候就需要我们拆分领域、每个子域都得到细化。比如做一个电商平台系统,老板最经典的话就是“你仿**app做就行了”。这是不妥当的,别人的需求不一定适合自己。因此便需要使用领域驱动去设计自己的系统。通过拆分领域,把一个庞大的电商平台拆解出各部分功能,除此之外,还要分析清除每个子域的边界,明白哪些子域属于核心子域,哪些属于公共子域等,然后还要弄清楚子域之间的联系是什么。在电商系统中,通常它都包含了好几个大模块,比如:订单、购物车、商品中心等。这些都是很容易能get得到的,毕竟我们日常都在使用,受到很多的熏陶。


拆解完各个子域后,其实这时候还不行,我们还需要细化子域,如此才能进行后续的领域模型设计。这部分需要注意几点:

  1. 梳理领域概念:梳理出领域内我们关注的概念、概念的关系,并统一交流词汇,形成统一语言。
  2. 梳理业务规则:梳理出领域内我们关注的各种业务规则,DDD中叫不变性(invariants),比如唯一性规则,余额不能小于零等。
  3. 梳理业务场景:梳理出领域内的核心业务场景,比如电商平台中的加入购物车、提交订单、发起付款等核心业务场景。
  4. 梳理业务流程:梳理出领域内的关键业务流程,比如订单处理流程,退款流程等。

从这些方面理清楚我们的系统后,才能更容易解决核心需求。

相关文章
|
6月前
|
设计模式 监控 算法
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
147 2
|
3月前
|
存储 消息中间件 JSON
|
6月前
|
敏捷开发 架构师 Java
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(基本概念篇)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(基本概念篇)
172 0
|
4月前
|
中间件 BI 测试技术
【实践篇】领域驱动设计:DDD工程参考架构
领域驱动设计(DDD)参考架构旨在为团队提供DDD实践的起点,强调业务与技术的分离,考虑多种架构风格如分层、六边形等。它包括多限界上下文结构,每个上下文内有应用层(不含领域逻辑)、领域层(含领域模型和事件)和网关层。接入层负责外部请求的处理,业务层协调不同上下文。组件包括Start(启动)、Common(通用)、API、Facade、Application Service、External API、Query、Domain和Gateway,各组件有明确的职责和依赖关系,如Gateway处理技术细节并作为系统与外部的接口。架构设计是多因素权衡,适应实际工程需求。
222 0
|
设计模式 前端开发 Java
项目终于用上了 DDD 领域驱动,太强了!
我在公司对支付业务、结算业务、资金业务使用DDD进行领域建模的两年,得到了许多好评,也面对过不少质疑,总体来说还是能收获不少,这对团队成员理解业务起着很大作用。近半年一直在研究DDD的落地实战,如今已修得阶段性成果,迫不及待与大家分享我的落地经验。 DDD分为战略设计与战术设计。一般来说,领域建模是属于战略层的,而DDD工程落地是属于战术层的,两者是否结合使用,视实际情况而定,比如传统的MVC架构也能使用DDD进行领域建模,DDD架构最好是先做DDD领域建模。 最新上线的一个微服务——内部交易中心,我们使用了DDD架构来落地,希望看完对大家有启发。
|
设计模式 架构师 数据建模
「领域驱动设计DDD」事件风暴简介:实现域驱动设计的简便方法
「领域驱动设计DDD」事件风暴简介:实现域驱动设计的简便方法
「领域驱动设计DDD」事件风暴简介:实现域驱动设计的简便方法
|
存储 消息中间件 JSON
【领域驱动系列3】DDD实践
在前面的《一文带你学习DDD,全是干货!》文章中,里面讲述了一个Demo,虽然有DDD的思想,但是感觉整体很乱,每一层都没有做好隔离,所以我参考小米内部的DDD脚手架,对这个Demo进行了重构,也就诞生了我这个版本,代码已经上传到GitHub中,大家可以自取:https://github.com/lml200701158/ddd-framework
856 0
【领域驱动系列3】DDD实践
|
设计模式 领域建模
DDD的模式与实践案例(1)
DDD的模式与实践案例(1)
1024 0
DDD的模式与实践案例(1)
|
测试技术
DDD的模式与实践案例(3)
DDD的模式与实践案例(3)
544 0
DDD的模式与实践案例(3)
|
设计模式
DDD的模式与实践案例(2)
DDD的模式与实践案例(2)
731 0
DDD的模式与实践案例(2)