本项目指在提供一个开箱即用的go开发环境。
在基础功能中,提供通用开发方式,使开发者精力专注于业务开发,预留扩展接口,方便功能扩展。
在项目指导中,提供DDD的开发指导,使开发者能够更好的理解DDD,并在实践中逐步掌握DDD的精髓。
以下是目录结构和DDD四层结构的对应关系(因前后端分离,故不包含user interface layer)
|--application //对应 application layer,放的是controller
|--domain //对应 domain layer,放的是service
|--infrastructure //对应 infrastructure layer,放的是基础组件
- controller只能依赖下层,即domain,infra,但尽可能只依赖domain
- 每一个controller的方法,大体只负责三个步骤:
- 检查参数
- 调用domain逻辑并组装
- 返回结果
- domain允许同层依赖,但尽可能减少,不能向上依赖
- 每个domain,职责要单一,通过组合完成复杂功能
- 每个infra独立完成一个功能,不依赖上层