一、DDD是什么?

DDD 是 domain drive design 领域驱动的设计模式

其实,DDD的提出是很早就被提出来了,只是2003年被提出来的时候,那个时候的整体开发模式还都是单体应用,一个大的项目,有啥就往里面堆啥,DDD也没有显出它的优势。都是面向用户驱动的编程,面向对象的编程。

这里的领域,在当下的微服务场景下,才有了用武之地,可以抽象出用领域去对应微服务,立马就能和微服务很好的结合。

二、DDD有什么用?

DDD可以很好的指导项目的设计、开发。用来做系统架构和落地。

DDD分两个步骤,一个它的战略设计,一个是战术设计

战略设计,显然在这更重要,就是要去思考这个产品的地位,定位清晰了,才能想明白它的业务,根据业务再去区分它的各个领域,梳理各种实体信息,就是一个从上到下,分而治之的设计方式。

战术设计,就是在战略设计结束后,根据划分的领域,实体,值对象,聚合,聚合根来通过微服务来设计实现。

三、DDD与传统的MVC 有什么区别?

现在我们用的MVC 就是传统的 View层 ,Controller层,Service 层,Model层,可以从上到下,也可以下到上,就是视图层,控制层,业务处理层,模型层,一层一层的调用。所有的业务都是在业务层进行处理,有业务的变更就是往里面塞。

DDD不同于传统的MVC 架构,设计上是一个四层架构的开发模式。更像是一个依赖倒置的过程。

接口层对外,应用层封装对跨领域层的调用,领域层就是对这个领域的业务的封装。基础层被每一层都会有依赖到,领域层,应用层,接口层。

在接口层有变动的时候,可以很好的切换。所有领域层在业务,在一个聚合里面能达到很好的实现闭环。

四、DDD与中台的关系

中台也是近两年才流行起来的词汇,就是在企业级将一些功能抽象处理,进行复用。这很好的符合DDD战略设计时,对领域的建模,领域根据用途区分为:核心域,通用域,支撑域。这里通用域是在很多地方可以复用的,核心域的主要逻辑在不同的端也可以做到通用。那基于域的实现,就可以做到中台的抽象,天然的匹配。

五、DDD如何在当下落地

目前我们的项目在开发中都是用的MVC,团队成员对DDD的理解也是不够深刻,那现阶段整体切换DDD肯定也不现实,而且DDD对于小公司是否友好也还要具体情况具体分析。

可以在一些小的项目中进行试探性的摸索,在实现中再去具体领会DDD的精髓,它不一定完全适合每一个公司,但是作为一种架构模式,一种架构思想,在指导开发中肯定是大有裨益的。