欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

深入理解DDD:分解设计模式的核心理念与详细解析

最编程 2024-02-11 08:03:02
...


一、概念

DDD:中文翻译为领域驱动设计(Domain-Driven Design),是一种设计思想,最早是Eric Evans(埃里克·埃文斯)在2003年《Domain-Driven Design –Tackling Complexity in the Heart of Software》一书中提出的概念,提出之后的很多年都不温不火。后来随着微服务架构的兴起,系统的规模和复杂度直线上升,才逐渐变得流行起来。

DDD架构思想 ddd概念详解_架构

二、DDD解决什么问题?

近些年,微服务大行其道,微服务有很多优点,我们这里就不再一一赘述。但是微服务项目依然会有很多新的问题,比如说微服务要如何拆分、要如何扩展?怎么样才能构建一个高内聚,低耦合的一个微服务?并且随着、项目的持续时间越来越长,业务越来越复杂,项目的复杂性也随之上升。各个微服务仍然会出现膨胀退化的问题。更严重的问题是业务也是随时变化,我们对业务的理解永远跟不上业务的变化,经过若干次版本以及人员的更迭,任何前期设计的模型,都无法从容应对。如果不幸在某一次迭代中留下一个小小的隐患,在以后就会逐渐的被放大,最终整个项目变得难以维护。

那在项目长期迭代中,我们怎么样保软件质量的稳定呢?DDD的架构模型就非常好的契合了现在的微服务时代,对于我们去构建微服务体系以及去落地现在非常流行的一个中台架构,都提供了非常好的一个理论指导。在复杂系统中使用DDD,将业务描述为领域模型,进而用领域模型来指导软件开发,这样业务的变化就可以快速的映射到领域模型当中,这样就可以以较低的成本维护一个系统,这对于如今生命周期越来越长的系统来说,是非常重要的。

DDD有着一套非常完整的理论体系,大到如何进行微服务的构建。小到如何写银行代码,DDD都提供了非常完整的理论指导,这也是DDD的魅力所在。但是呢也先别着急兴奋,DDD本身只是一套高度抽象的方法论,没有具体的落地方案,它不像微服务,只要把各种各样的技术框架用上,整个软件基本上就成型了。因此如何将DDD的完善落地,还是处在一个仁者见仁智者见智的阶段。目前比较出名的DDD实践是阿里的COLA框架:

DDD架构思想 ddd概念详解_DDD架构思想_02

最后,DDD也并非“银弹”,不一定适用于所有场景,由于缺乏具体落地方案,DDD在实践过程当中非常容易走偏,一旦走偏,项目就会变得更加混乱,甚至比不用DDD时更混乱。