后端领域驱动设计实例

说明

1024程序员节快乐呀~今天不讲代码了,来玩点有趣的事吧( ̄~ ̄)。一般我们做后端项目的时候,一般都是使用controller-service-dao这样的方式去分层,那么其中数据的流转和转换一般都没有做过特别的约束,导致我们的项目的各种DO、VO、DTO等混杂在一起,能用,但是代码显得不那么有层次,在如今微服务/云原生越发火热的情境下,如何写出更加漂亮的项目,能够更容易的维护和阅读就显得更加的重要了。今天聊的 领域驱动设计(DDD)可以大概解决我们遇到的后端代码结构问题。(Domain-Driven Design )是由Eric Evans最先提出,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题。

快速开始

那么我们如何具体的使用DDD呢

比如我们的项目结构可以设计成下面的样子(这是我的想法哈,POJO具体的各种XO可能会因个人理解而有所不同)

project
└───src
│   └───main
│   │   └───java
│   │   │   └───cn.yunlingfly.×
│   │   │   │   └───api
│   │   │   │   │   └───controller          控制器
│   │   │   │   │   └───dto                 传输类
│   │   │   │   │   └───service             服务层
│   │   │   │   │   │   └───impl            实现层
│   │   │   │   │   └───vo                  返回类
│   │   │   │   └───domain
│   │   │   │   │   └───entity              实体类
│   │   │   │   │   └───service             第三方服务层
│   │   │   │   └───infra
│   │   │   │   │   └───config              配置类
│   │   │   │   │   └───filter              过滤器
│   │   │   │   │   └───mapper              数据交换层
│   │   │   │   │   └───util                工具类
│   │   │   │   └───×Application.java       启动类
│   │   └───resources
│   │   │   └───mapper                      查询语句
│   │   │   └───static                      静态资源
│   │   │   └───templates                   模板文件
│   │   │   └───application.yml             配置文件
│   └───test

以一个Springboot的一般单体项目为例,我们的启动类命名为×Application.java,这是整个程序运行的入口,也可以是Maven打包后运行的启动类。在启动类同级,分别为三个目录:api、domain和infra,

api目录下具体为controller(对外提供服务)、dto(返回前端数据的POJO)、service(供controller调用)和impl(service接口的实现类)、vo(前端发出的前置数据POJO)

domain目录下具体为entity(对应数据库实体类)、service(第三方service例如七牛云)

infra目录下具体为config(配置类)、filter(过滤器例如JWT)、mapper(请求数据库的接口)、util(一些工具类)


resource目录与java目录同级

resource目录下具体为mapper(请求数据库的接口实现SQL文件)、static(静态资源)、templates(模板文件)、application.yml为基础配置文件


test目录与main目录同级,这里放的是测试文件,目录一般和java目录相同,这里不细讲了吧,下次写一个如何使用groovy+Spock的方式去测试Springboot项目吧

 

顺便也放一份阿里巴巴Java开发手册在这吧,有需要的可以自行下载戳

-> csdn

-> 七牛云

你可能感兴趣的:(架构,后台,DDD,领域驱动设计)