Skip to content

领域驱动设计(DDD) 是什么?

DDD是Domain-Driven Design的缩写,中文翻译为领域驱动设计。DDD是一种软件设计的方法论,最早由Eric Evans在2002年提出,出自书《领域驱动设计:软件核心复杂性应对之道》。

DDD核心方法论是什么?

DDD的核心方法论,简述下来是:领域问题驱动模型设计,模型驱动软件设计。要从领域问题出发,去设计一个领域模型,来解决领域问题,再设计具体的软件来实现这个领域模型,从而得到一个可以解决领域问题的软件系统 。

DDD有什么优势?

DDD给对领域不熟悉的新手,对软件设计不熟悉的新手,提供了一种普遍有效的可以快速上手的软件设计方法。

DDD从领域问题出发的思想,让程序员更关注领域问题,从而更容易开发出能解决领域问题,带来用户价值的软件。DDD要求有专门实现领域模型的程序模块,作为程序的核心,这让程序去用领域的语言表达如何解决领域问题,从而提升了整个软件的课理解性和可维护性。

DDD推荐的实践方式,比如领域事件、六边形架构、CQRS等,也能帮助构建出容易扩展,高性能的软件系统。

如何评判一个项目是否使用了DDD?

一个项目只要满足以下两个条件,就算是采用了DDD:

  • 遵循了DDD核心方法论
  • 有单独的模块来实现领域模型

什么是领域?

领域是英文单词domain的中文翻译。领域的原意是范围。在DDD中,领域指的就是软件系统要解决的问题的范围,或者说有哪些问题需要软件系统来解决。这些问题的解决对于软件系统的用户来说是有价值的,是用户真正关注的。DDD的方法论,要程序员们把用户真正关注的问题放到第一位,而不是具体的技术实现放到第一位。

很多时候,我们还会说业务、业务领域、业务问题等,这里的业务也是领域的意思。

领域模型是什么?

领域模型是针对领域问题设计的模型。它是领域问题的解决方案,同时它忽略了很多技术实现细节。