什么是DDD

DDD全称领域驱动设计,是一种设计思想,可以用来指导微服务的落地
从名字上就可以看出来,领域是核心,至关重要,所有的设计必然是基于领域。

为什么要用DDD?

三层架构

ddd架构四层架构 ddd和三层_微服务

相信绝大多数从事java开发的人员,基本上接触的都是三层架构,其中视图层是比较薄的,
而数据访问层主要是基于Mybatis、JPA等持久化框架,业务逻辑和对数据的操作都是放到逻辑层。

在实际开发中,三层架构很容易导致逻辑层越来越臃肿,或者开发人员将一部分业务逻辑通过数据访问层(sql)来进行实现,导致代码越来越臃肿和难以理解。

而且三层架构中技术和业务逻辑是耦合到一起的,如果数据访问层更换一个框架,如JPA修改为Mybatis。必然需要同时修改逻辑层和数据访问层。而DDD对这些问题都有相应的解决方案。

DDD四层架构

ddd架构四层架构 ddd和三层_java_02

1.用户接口层

面向前端提供接口,可以增加权限校验、日志记录等功能。

2.应用层

应用层原则上没有任何业务逻辑,是很薄的一层,可以用来协调领域层。微服务之间的调用可以放到应用层。

3.领域层

领域层专注于业务逻辑,领域对象的持久化交给基础设施层,将业务与技术分离。

4.基础设施层

负责领域对象的持久化,同时也为其他层提供通用的技术支持。

DDD四层架构的优点

DDD四层架构和三层架构的对比中,可以看出四层架构中,领域层专注于业务,基础设施层专注于技术,使业务与技术实现解耦分离。极大的提高了代码的可维护性,这也是我在今年开发DDD项目最大的感悟。

小结

从去年底开始接触DDD,本篇文章主要是讲解了我在使用DDD过程中的感悟与理解,一句话概括:指导微服务的落地,业务与技术分离。时间有限,今天先写到这里,后续有时间会写一个DDD demo分享给大家,也欢迎大家斧正。