聊聊golang的DDD項目結構

本文主要研究一下golang的DDD項目結構git

interfaces

food-app-server/interfacesgithub

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/applicationgolang

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/domainredis

domain git:(master) tree
.
|____entity
| |____food.go
| |____user.go
|____repository
| |____food_repository.go
| |____user_repository.go
domain層主要是定義了entity,以及repository接口;entity裏頭會包含一些領域邏輯

infrastructure

food-app-server/infrastructureapp

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層。dom

doc

相關文章
相關標籤/搜索