领域驱动设计总结——落地与思考

简介: 本文为领域驱动设计系列总结的第六篇,主要对领域驱动设计概念做个介绍,本系列领域驱动设计总结主要是在Eric Evans 所编写的《领域驱动设计》 一书的基础上进行归纳和总结。本文也是领域驱动设计总结系列最后一篇,主要是简单的探讨下,领域驱动设计的落地方式,以及对这整个系列做一个总结。

本文为领域驱动设计系列总结的第六篇,主要对领域驱动设计概念做个介绍,本系列领域驱动设计总结主要是在Eric Evans 所编写的《领域驱动设计》 一书的基础上进行归纳和总结。

本文也是领域驱动设计总结系列最后一篇,主要是简单的探讨下,领域驱动设计的落地方式,以及对这整个系列做一个总结。


一 落地方式

首先说结论,我个人认为完整的领域驱动设计在很多公司并没有多少落地的可能。领域驱动设计适合业务比较复杂且业务变化迭代没那么频繁的中大型系统,而很多公司业务迭代非常频繁,并不适合使用领域驱动设计。

同时领域驱动设计作用受细节设计的质量和实现决策的质量影响很大,而且只要有少数几个开发人员没有弄清楚它们,整个项目就会偏离目标,而这对开发人员要求很高,编码能力较强且对领域驱动设计有一定理解。

然而目前国内对领域驱动设计重视程度不够,或者说对业务代码质量和业务代码设计重视程度都比较低,并没有多少比较成熟的落地经验可供分享和沟通。所以想要完全落地是很困难的事情,而且也需要针对现有系统进行改造重构,评估后续业务的发展,确认是否适合使用领域驱动设计。

上述中主要说的是完整的落地领域驱动设计比较困难,日常工作中,我们虽然不能完整的落地领域驱动设计,但也可以借鉴和应用领域驱动设计中的很多思想,比如统一语言,建立业务模型,创建实体和值对象,柔性设计,领域的划分,以及针对大型系统的战略设计三原则上下文,精炼,大型结构等等,这些都可以深入研究并进行借鉴,从而应用到我们日常的业务代码设计中。

比如说开发大的业务需求时,可以通过领域建模的方式加深业务的理解,并且和产品通过模型进行有效的沟通,保持双方理解一致。代码编写时可以适当创建一些领域对象封装业务逻辑。设计代码时也可以参考柔性设计,四层分层结构,将代码设计的更加友好。不同业务系统之间进行交互时也可以运用上下文联系的一些模式进行沟通交互等等。而且在涉及业务系统划分,特别是微服务拆分时,使用领域驱动设计思想也会获得很大的帮助。

所以我们可以学习领域驱动中的设计思想和其中一些比较成熟的模式运用到日常代码开发中,并不一定非要整体运用领域驱动设计开发。但在实际落地的时候一定要注意结合系统业务具体情况,千万不可滥用。


二 总结

本系列总结是针对Eric Evans编写的《领域驱动设计》一书所做的简单读书总结,主要从什么是领域驱动设计、如何运用领域模型、如何构造领域模型、如何发掘深层次模型、如何设计大型系统等几个方面对本书做了一个简单的总结,并结合业内一些领域驱动设计落地方案及部门现状简要的分析了领域驱动设计落地方式。书中有很多精华内容,比如各种上下文联系模式,精炼技巧等等,本文都只是简单介绍并未深入。有兴趣的建议单独去看一下原著,叙述的非常清晰。

领域驱动设计是一种思想,Eric Evans编写的《领域驱动设计》也仅仅只是这种思想的一部分内容。领域驱动设计目前已经发展出来多种架构方式,比如比较出名的有Alistair Cockburn 提出的六边形架构,都是很好地落地方式。

如果想要实际运用领域驱动设计,那只凭本文的理论还远远不够,后面有兴趣的建议再读一下Vaughn Vernon的《领域驱动设计精粹》和 《实现领域驱动设计》。

领域驱动设计思想,并没有统一的实施标准,最终的落地还是需要了解相关思想后,再亲自结合自己的系统去实践和总结,并根据自身业务情况不断进行调整方案,方有成功落地的可能。


主要参考书籍:

1.《领域驱动设计》Eric Evans

2.《实现领域驱动设计》Vaughn Vernon

相关文章
|
缓存 架构师 Java
架构师必备 - DDD之落地实践
今天带大家认识下DDD,一个听起来很垃圾却真的很牛X的设计思想,架构师必备!
|
设计模式 缓存 自然语言处理
DDD领域驱动设计如何进行工程化落地
DDD领域驱动设计到底如何进行实际的工程化落地,为什么要进行领域分层?本文主要围绕DDD领域分层,设计了可落地的工程结构。
DDD领域驱动设计如何进行工程化落地
|
前端开发 Java 数据库连接
领域驱动设计:从学习到实践(一)
产品同学将需求分析完和开发同学进行需求评审,评审完毕后开发同学开始基于需求进行设计,一般会落到数据库设计,将库表设计完毕后,再向上进行分层开发。如果是前后端分离的项目,会在前期约定接口,进行基于契约的并行开发。所以,我们称这种方式为数据驱动开发,或基于数据模型的开发。
领域驱动设计:从学习到实践(一)
|
Cloud Native 架构师 Devops
云原生时代领域驱动设计(DDD)的价值——从《没有银弹》说起
软件开发需要面对本质困难和附属困难。云原生、DevOps实践大幅降低了附属困难,使得架构师可以全力聚焦于业务复杂性,而DDD恰是管理业务复杂性的有效方法。
1593 0
云原生时代领域驱动设计(DDD)的价值——从《没有银弹》说起
|
4月前
|
缓存 架构师 中间件
成为工程师 - 如何做DDD领域驱动设计?
成为工程师 - 如何做DDD领域驱动设计?
|
6月前
|
敏捷开发 存储 前端开发
【美团技术】领域驱动设计DDD在B端营销系统的实践
【美团技术】领域驱动设计DDD在B端营销系统的实践
|
设计模式 存储 测试技术
领域建模的体系化思维与6种方法论
本文希望能够通过总结过去自己对领域建模的一点粗浅经验给需要的同学能有些许启发,少走弯路。
55630 72
|
Java API 领域建模
领域驱动设计(DDD)-简单落地
一、序言     领域驱动设计是一种解决业务复杂性的设计思想,不是一种标准规则的解决方法。在本文中的实战示例可能会与常见的DDD规则方法不太一样,是简单、入门级别,新手可以快速实践版的DDD。如果不熟悉DDD设计思想可看下基础思想篇 二、设计阶段     领域建模设计阶段常见的方法有 四色建模法、EventSourcing等 推荐一篇博文正确理解领域建
12184 1
|
架构师 数据可视化 领域建模
架构师之路 - 业务领域建模
架构师之路 - 业务领域建模
284 0
|
Web App开发 机器学习/深度学习 数据可视化
OneCode 领域驱动设计(DDD)技术实践(一)
OneCode-DSM(以下简称DSM)工具集是建立是以OneCode低代码引擎为基础专注于低代码建模应用的高阶建模工具。 在OneCode引擎中,出了为普通用户提供无代码的拖动设计器,低代码的业务逻辑编排器,之外还提供了供专业业务领域专家的使用的DSM建模工具。
下一篇
DataWorks