DDD(领域驱动设计)示例目录结构

Posted rayylee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDD(领域驱动设计)示例目录结构相关的知识,希望对你有一定的参考价值。


- src
    - it   // 集成测试模块
        - integration   // 集成测试代码
        - resources     // 集成测试配置文件 
    - ut   // 单元测试模块
        - unit          // 单元测试代码
    - main //业务代码
        - pkg
            - interfaces    // 用户接口层
                - facade    //  提供较粗粒度的调用接口,将用户请求委托给一个或多个应用服务进行处理
                    - rest  // REST API
                    - grpc  // gRPC API
                -  mq       //  事件订阅  注1:统一返回Result  注2:应该捕捉所有异常   
            - application   // 应用层
                - dto       // 存放 dto 数据传输对象
                    - request 
                    - response
                - assembler    // 实现 DTO 与领域对象之间的相互转换和数据交换      
                - event         //  存放事件相关代码,为了事件统一管理,将所有事件发布和订阅统一放到应用层,核心业务逻辑放到领域层
                    - publish   // 事件发布
                - service       //对领域服务或外部应用服务进行封装、编排和组合,对外提供粗粒度服务
                    - command   // 操作相关,必须调用领域层  
                    - query     // 只放查询相关,可以直接调用持久层  
                 // 注1:出参必须为 DTO 
                 // 注2:入参为 Command 或 Query,唯一例外是单ID查询的场景
                 // 注3:Command 和 Query 有语义作用,避免复用   
                 // 注4:实现入参校验,减少非业务代码混杂业务代码中
            - domain          // 领域层
                - aggregate   // 聚合目录,按业务名称命名,如权限聚合
                    - entity  //领域对象
                        - factory   // 从其他服务返回结果构建领域对象???
                        - valueobject
                    - event         // 存放事件实体和相关的业务逻辑代码
                    - service       // 存放领域服务代码 
                    - repository    // 仓储,存放所有查询和持久化领域对象的代码,通常包括仓储接口和实现,仓储实现一般放在基础层,也可以直接放一起                  
            - infrastructure // 基础层   
                - config     // 存放配置相关代码
                - client     // 存放跨服务接口
                - common     // 存放消息、数据库、缓存、文件、总线、网关、公用的常量、枚举等
                    - enums      // 存放枚举
                    - cache      // 缓存相关服务
                    - mq         // mq相关配置 
                    - db         // 数据库相关 
                       - mapper  // 存放 mybatis dao 实现                     
                       - repositories  // 仓储实现
                            - po            // 持久化对象
                            - converter     // 用于封装底层,实现PO与DO一对多或多对多转换 
                            - perisistence  // 存放 RepositoryImpl,调用 mapper 
                    - ......         
                - util      // 存放平台、开发框架、第三方类库、通用算法等基础代码
        - resources // 配置文件        

以上是关于DDD(领域驱动设计)示例目录结构的主要内容,如果未能解决你的问题,请参考以下文章

DDD领域驱动设计实战-分层架构及代码目录结构

DDD 领域驱动设计落地实践系列:工程结构分层设计

DDD领域驱动设计:四层架构应用

DDD领域驱动设计:四层架构应用

DDD(领域驱动设计)

领域驱动设计(DDD)中简单易用的10种技巧