DDD-领域划分设计


高内聚,低耦合:单一职责原则、依赖反转原则、开放封闭原则

  1. 构建领域地图(边界)
    a. 在DDD中推荐了事件风暴会议这样的具体形式,也强调了统一语言的理论模型。
    b. 针对各个核心环节,优先构建单元测试案例,从而形成一些TDD测试驱动设计的实践场景。
    c. 领域并不是天然存在的,这需要依赖于软件团队对软件需求的合理分析。并且分析的过程,即不能太过偏向于真实的业务领域,也不能太过偏向于极度抽象的技术领域,需要在整个项目团队内形成共识,然后通过初步抽象的通用语言将设计结果固化下来。
  2. 使用四层架构巩固领域基础(包结构)
    application
    domain 
       xxx
         adaptor
              interface
         entity 
         infrastructure
         repository
         service
  3. 划分限界上下文,巩固领域划分(DDD落地实践的关键)
    a. 传统MVC设计方式中,强调的是技术隔离,而并没有从业务上的限界上下文边界,所以,逻辑边界是混乱的。
    b. 领域应该是足够内敛的,每个领域内的业务能力是与当前领域的知识语境紧密相连的。一个领域想要调用另外一个领域的业务能力,只能通过对方暴露出来的业务能力进行协作,而不能去干预对方领域的实现细节。所谓的单体架构、微服务架构、甚至包括MQ事件驱动架构,在DDD的视野中,都是领域之间的不同协作方式而已,对领域内部都是没有影响的。
    c. DDD 内敛
  4. 单体架构优先(SPI)
    a. 越是复杂的项目,就越应该重视单体架构的快速验证和快速试错,这对于提高复杂项目的运行效率是非常重要的
    b. 然后将单体架构中的关键领域拆分成微服务(比如SPI切换为Nacos,由于有防腐层,所以只需要切换抽象接口的实现类即可)

文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录