当前位置: 首页 > article >正文

了解 DDD 吗?DDD 和 MVC 的区别是什么?

简介:

DDD(Domain-driven Design) 和 MVC(Model-View-Controller) 是软件后台开发两种流行的分层架构思想。

MVC 是一种设计模式,主要用来分离用户界面,业务逻辑,和数据模型。

而 DDD 是一种架构方法论,旨在通过构建业务领域模型 domain 来解决复杂系统中的设计和维护难题。

大白话讲解 DDDMVC 的区别:

MVC三层模型是面向数据库开发,接到一个需求时先设计数据库,从数据库开始倒着往controller设计实现代码逻辑,如果一开始数据库设计不合理,后期想要改动就会很困难了。

DDD四层模型是以业务领域来划分实现具体的逻辑,就像我们的衣柜,在MVC里就是一个整体的衣柜,如果家里人员越来越多,爷爷、奶奶、大宝、二宝、三宝,那么衣柜将会越来越乱。

而DDD里就会分为爸爸的衣服、妈妈的衣服、女儿的衣服,甚至每一个下面还可以再细分为女儿的T恤、女儿的裤子、女儿的配饰...DDD领域驱动设计和我们常说的面向对象编程、微服务其实很相似。

架构层面:

MVC 分为三层:Controller 来接收业务请求,Service 来编写业务逻辑,Dao 用来和数据库打交道。如果系统比较大,那么所有的逻辑都会放在同一个 Service 里,那么就会显得比较臃肿,并且难以维护。

DDD 分为四层:Interface 来接受请求,Application 层编排请求需要的各个 Domain 服务(这一层尽量薄,尽量只做编排不放业务逻辑),Domain 层来实现业务逻辑,Infrastructure 和数据库打交道。

举例说明:

比如一个订单业务,涉及:订单状态,价格计算,库存扣减,物流配送,支付... 等多个服务

  • 如果是在 MVC 架构中,那么这些服务都是可能都是在一个 orderService 中来实现的,业务耦合度比较高,较难维护和扩展

  • 如果是在 DDD 架构中,那么我们可以拆分为 订单域(order domain 管理订单状态),价格域(Pricing domain),库存域(Inventory domain),支付域(Payment domain),物流域(Logistics domian),每个 domain 专注于自己的逻辑,然后由 application 来组合这些 domain ,这样业务逻辑清晰并且也很好扩展和维护。

http://www.lryc.cn/news/2381963.html

相关文章:

  • Unity3D仿星露谷物语开发46之种植/砍伐橡树
  • STM32外设应用详解——从基础到高级应用的全面指南
  • 作业帮C++后台开发面试题及参考答案
  • 红队进阶实战
  • C语言中的指定初始化器
  • C/C++ 整数类型的长度
  • gRPC开发指南:Visual Studio 2022 + Vcpkg + Windows全流程配置
  • 高密度服务器机柜散热方案:高风压风机在复杂风道中的关键作用与选型要点
  • Android framework 问题记录
  • 框架之下再看HTTP请求对接后端method
  • Oracle APEX IR报表列宽调整
  • 【笔记】与PyCharm官方沟通解决开发环境问题
  • 深入解析:如何基于开源OpENer开发EtherNet/IP从站服务
  • node.js文件系统(fs) - 创建文件、打开文件、写入数据、追加数据、读取数据、创建目录、删除目录
  • SQL:MySQL函数:空值处理函数(NULL Handling Functions)
  • 利用ffmpeg截图和生成gif
  • 初始化一个Springboot项目
  • YOLOv8在单目向下多车辆目标检测中的应用
  • 23种设计模式解释+记忆
  • Baklib构建AI就绪型知识中台实践
  • JS逆向-某易云音乐下载器
  • FreeRTOS全攻略:从入门到精通
  • 服务器的基础知识
  • AGI大模型(25):LangChain提示词模版
  • Python连接redis
  • 使用exceljs将excel文件转化为html预览最佳实践(完整源码)
  • 前端面经12 函数柯里化
  • 企业级 Hosts 自动化管理实战:基于 HTTP 检测的高可用域名解析方案
  • 告别蜘蛛池!PHP 打造你的网站专属蜘蛛导航仪
  • ubuntu kubeasz 部署高可用k8s 集群