聊聊golang的DDD项目结构


本文摘自网络,作者,侵删。

本文主要研究一下golang的DDD项目结构

interfaces

food-app-server/interfaces

interfaces git:(master) tree
.
|____fileupload
| |____fileformat.go
| |____fileupload.go
|____food_handler.go
|____food_handler_test.go
|____handler_setup_test.go
|____login_handler.go
|____login_handler_test.go
|____middleware
| |____middleware.go
|____user_handler.go
|____user_handler_test.go
比如interfaces层定义了输入层的相关方法,以使用gin提供http接口为例,这里的handler等为使用gin提供的一些http接口,这一层调用application层

application

food-app-server/application

application git:(master) tree
.
|____food_app.go
|____food_app_test.go
|____user_app.go
|____user_app_test.go
application层主要是调用domain层与infrastructure层来实现功能

domain

food-app-server/domain

domain git:(master) tree
.
|____entity
| |____food.go
| |____user.go
|____repository
| |____food_repository.go
| |____user_repository.go
domain层主要是定义了entity,以及repository接口;entity里头会包含一些领域逻辑

infrastructure

food-app-server/infrastructure

infrastructure git:(master) tree
.
|____auth
| |____auth.go
| |____redisdb.go
| |____token.go
|____persistence
| |____db.go
| |____food_repository.go
| |____food_repository_test.go
| |____setup_test.go
| |____user_repository.go
| |____user_repository_test.go
|____security
| |____password.go
infrastructure层这里提供了针对domain层的repository接口的实现,还有其他一些基础的组件,提供给application层或者interfaces层使用

小结

DDD一般分为interfaces、application、domain、infrastructure这几层;其中domain层不依赖其他层,它定义repository接口,infrastructure层会实现;application层会调用domain、infrastructure层;interfaces层一般调用application层或者infrastructure层。

doc

  • food-app-server

本文来自:Segmentfault

感谢作者:codecraft

查看原文:聊聊golang的DDD项目结构

相关阅读 >>

Golang to docker

Golang flag是什么

beeGo-vue-admin基于当前流行技术组合的前后端rbac管理系统:Go1.15.x+beeGo2.x+jwt+redis+mysql8+vue 的前后端分离系统,权限控制采用 rbac,支持

Godoc命令不存在的解决方法

Golang怎么定时任务

单核cpu下Golang调度及抢占式调度的实现

Golang单向链表

vscode 安装Golang插件

归并排序

Go属于解释型语言么

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...