DDD领域驱动设计

DDD领域驱动设计

传统运维实质上是补补丁,会使系统越来越复杂,性能下降,耦合高。
DDD则是从整体结构上解决业务变更带来的问题。详见对象划分原则

待解决问题

  1. DDD的作用与意义?
  2. How to 进行领域建模?
  3. 怎么将领域建模后的模型准换为程序设计?
  4. 支持DDD的架构设计

1.DDD的作用和意义

使用要求:

系统变得越复杂时适合使用
当程序简单时反而不适合。

作用域:作用和意义
  1. 最初的项目:为了日后维护变更时的方便
  2. 不断维护的项目:方便完成业务升级
  3. 未来的项目:业务越来越复杂、技术更新速度快、系统变得庞大、市场激烈竞争。
    架构演变。
    此时业务和框架耦合在了一起。采用整洁架构,有一个中间接口层进行两者解耦。使其完成更新。
DDD过程:

在这里插入图片描述

1领域建模:深刻理解业务,转换成领域模型。
2.领域建模装换成数据库设计
3.领域建模转换为充血模型再到贫血模型

DDD解决方案

领域建模+微服务设计来完成越来越复杂的架构设计。
缺点:会增加复杂度,降低交互速度。
解决缺点:整洁架构设计
在这里插入图片描述

小而专的微服务设计

某几个微服务都需要调用同一个表时会导致服务被影响。
如购物、交易、配送服务操作商品表的情况。

应当设计成某个表只让一个微服务进行操作,对其他服务提供调用接口完成调用。
在这里插入图片描述

跨库关联查询解决方案:补填信息

从原来的将两个表join起来完成查询变成先查询订单后补填用户。自己补填的话需要花费大量时间设计一个底层来在查询完订单信息后自动补填用户信息。以此来更多的关注于业务。

查询订单后对订单数据进行分页,信息进行补填
在这里插入图片描述

2.How to DDD?

软件规模化给团队带来的挑战
在这里插入图片描述
频繁的变更导致软件质量的下降。于是软件的维护越来越难,因此软件的架构极为重要!
在这里插入图片描述
由简单------>复杂
原来的做法是直接在padoff方法中不断添加代码导致越来越难以维护。现在应该调整程序结构。
在这里插入图片描述

领域建模思想

调整程序结构的方法即 领域建模思想
对象应与现实世界事物相对应。
方法与现实世界行为对应。
关联与现实世界相对应。

单一职责原则SRP

理解:即对象划分原则
软件系统中的每个元素只完成自己职责内的事情,将其他的事情交给别人去做。
“职责”通常理解,与其相关的事情都是它的职责。错误理解
“职责”正确的认知:一个职责是软件变化的一个原因 原因!!!
帮助理解:即设计为 更改这一需求时不牵扯别的需求,类似于微服务的拆分。
以前自己的理解:拆分的不够专,导致耦合较高。
案例:
如付款时添加折扣功能:
在这里插入图片描述
领域模型

在这里插入图片描述
设计实现

限界上下文?

真实世界中场景是多样化的
折扣、支付、等

此概念在学习过程中自己也没太理解。
故领域建模图应当为多个小的图而不是一张大的图

案例

远程智慧医疗系统
初期:传统的诊所管理系统

在这里插入图片描述

统一语言建模与领域建模

  1. 事件风暴
    在这里插入图片描述
    1. 事件即事实
      领域事件:命名都是过去式,且事情很重要,有记录。
      且需要识别领域事件有无聚合在这里插入图片描述
      eg:
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
需要识别领域事件有无聚合
删除了整体后部分也会消失
在这里插入图片描述

  1. 事件风暴会议
    目标:进行领域建模
    在这里插入图片描述
    领域建模
    在这里插入图片描述
    限界上下文
    在这里插入图片描述

自我总结:活动者单独划分,功能模块依次划分。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值