DDD(领域驱动设计)

一:DDD(Domain-Driven Design 领域驱动设计)

Domain:领域

Driven:驱动

Design:设计

由Eric Evans最先提出,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题。整个过程大概是这样 ,开发团队和领域专家一起通过“通用语言(Ubiquitous Language)”去理解和消化领域知识,从领域知识中提取和划分为一个一个的子领域(核心子域、通过子域、支撑子域),并在子域上建立模式,在重复以上步骤,这样周而复始,构建出一套符合当前领域的模型。

二:架构

  • spi:服务商使用
  • api:外部接口使用
  • 名词:基础中间件、流程编排、域能力、依赖层、服务、引擎、变现层、数据模型、领域模型
  • 目录结构
baidu-domain-demo 领域层,包含核心域的业务规则抽象,是能够标准化的,不依赖于任何其他层的内容,抽象程度最高     
    baidu-domain-demo-client 
        |--service 接口   
    baidu-domain-demo-service  (类以DomainService结尾)
        |--单域服务实现  
         |--service 接口
                      |-- impl     接口实现                                
    baidu-domain-demo-core  (类以Repo结尾) 
        |--model           领域模型对象
        |--extension       领域扩展点
        |--manager         调dao接口做数据转换
    baidu-domain-demo-dal      (类以DAO结尾)        数据层,主要为数据库操作
        |--dao             数据模型操作
        |--do              数据库映射对象
        |--query           只解决页面查询对象


project-demo 项目工程
    |-- start                  启动
        |--start 
            |--Application     应用启动类
    |-- common
        |-- constants    各种常量
        |-- message      消息相关
        |-- util         工具
    |-- integration  接口整合
        |--xxSDK    各种sdk接口
    |-- business demo 业务工程
        |-- biz
            |--api          api
            |--enums        枚举
            |--message      消息
            |--model        DO->model
            |--convert      对象转换
            |--service      接口
                |--impl     接口实现
            |--spi          spi
            |--util         工具
            |--xxx业务功能   业务功能
        |-- engin           工程
            |--api          api
                |--impl     api实现
            |--engin
                |--xxx功能点

提炼领域知识:who、what、why

分析业务:结构化分解

抽象、应用、平台化、产品化

应用架构核心:抽象、复用、能力下层

 

你可能感兴趣的:(框架(中间件))