聊聊golang的clean architecture项目结构

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

clean architecure

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q4XGa2Zd-1615644923764)(https://blog.cleancoder.com/uncle-bob/images/2012-08-13-the-clean-architecture/CleanArchitecture.jpg)]

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值