一文读懂:DDD领域驱动设计

本文介绍了DDD(领域驱动设计)的基本概念,包括领域、Model的区别,充血模型与贫血模型的对比,以及领域驱动的三层架构(API层、Domain层、Repository层)。重点阐述了领域边界、限界上下文和防腐层的作用,以确保业务一致性与模块化开发.
摘要由CSDN通过智能技术生成

  1. DDD理解的定义:DDD是已经解决复杂软件的思想,核心思想是面向对象(OO),其核心概念是Domain(领域)和Model(模型)

  1. 什么是领域呢?领域可以理解为业务的范畴,领域可大可小,对应着大小业务问题的边界,简单来说,领域驱动设计就是将业务上要做的一件大事通过推演和抽象,拆分为多个内聚的领域.
  2. 充血模型:将实体和引起实体状态变换的方法放在一个模型里面
  3. 贫血模型:Pojo
  4. DDD中的模型:
    1. Model与传统的POJO(DTO、DO、DAO)类等对比,都是一个类中有属性、属性有Get/Set方法,并且做传输对象。
    2. Model与传统MVC三层架构层的业务逻辑层中的Service对比,都是处理业务行为(Action)层。
    3. 模型(Model)承载着业务的属性和具体的行为,是业务表达的方式、是DDD的内核。是一个类中有属性、属性有Get/Set方法,并且业务的行为(Action)操作也是在模型类中(充血模型)即做业务逻辑处理,又做数据传输对象,模型分为Entity、Value Object、Service这三种类型。
  1. DDD模型的边界
    1. 限界上下文,领域边界上下文,域的拆分,按业务抽象进行划分,一个业务拆分成几个独立的域,每个域又可以细拆成不同的子域
    2. 防腐层:一个域在访问其他域的模型时,把获取到的模型做层转换映射到自己域的模型中(不直接使用别的域模型作为自己域模型中的一部分),防止源域模型发生变更,依赖源域模型的调用方,在需要源域模型新功能时,必须要全局依赖修改,才在能兼容,防止域上下文不一致产生的冲突
  1. 领域驱动三层架构

API层是作为对外打包、前端接口调用使用。Domian层是整个域模型,不能直接把它打包成maven给别人使用,也不能直接把它作为接口给前端使用,有些需要API层作为进行转换后调用Domain,对调用Domain返回的数据进行包装筛选后再返回出去。

Domain层系统的核心层,所有具体的业务逻辑处理、事件处理等都在这层域模型中处理

Repository层数据源代理层,Repository 层类似一个网关代理,它本身没有数据,数据都是通过它的代理来被Domain层访问,被代理的数据源不仅仅可以是DB、ES还可以是HTTP、RPC任何与Domain层进行数据交互的都叫Repository

参考文献:领域驱动设计(DDD)-基础思想 - 知乎 (zhihu.com)

  • 36
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GeekInk失控

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值