聊聊golang的clean architecture項目結構

本文主要研究一下golang的clean architecture項目結構html

clean architecure

clean architecture定義了四層結構,最內層是entities( enterprise business rules),再往外是use cases( application business rules),接着是interface adapters( 好比controller、presenters、gateways),最外層是frameworks & drivers( 好比web、ui、db、devices、external interfaces)

app

go-cleanarchitecture-sample/src/appgit

├── domain
        │   └── user.go
        ├── glide.lock
        ├── glide.yaml
        ├── infrastructure
        │   ├── router.go
        │   └── sqlhandler.go
        ├── interfaces
        │   ├── controllers
        │   │   ├── context.go
        │   │   ├── error.go
        │   │   └── user_controller.go
        │   └── database
        │       ├── sqlhandler.go
        │       └── user_repository.go
        ├── server.go
        └── usecase
            ├── user_interactor.go
            └── user_repository.go
domain層定義了領域模型及相關領域方法;usecase層定義了業務用例方法及相關接口,而後進行編排實現;infrastructure層是對一些基礎服務/類庫的管理;interfaces層這裏對輸入輸出進行適配實現use case層定義的接口

小結

clean architecture主要是分了4層結構,domain層,有的會把repository接口放在這一層,而後domain service會調用repository;use case層對應ddd的application層,主要是業務編排,有的也把repository接口放在這一層;interfaces adapters層會對輸入和輸出進行適配,實現use case定義的方法,相似ddd的interfaces層;infrastructure層主要是對基礎服務/類庫的管理,有些工程把對repository的實現也放這裏了,貌似不太穩當。github

doc

相關文章
相關標籤/搜索