本文次要钻研一下golang的clean architecture我的项目构造

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

        ├── 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的实现也放这里了,貌似不太得当。

doc

  • The Clean Architecture
  • go-cleanarchitecture-sample