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

简介:

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

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

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

大白话讲解 DDD MVC 的区别:

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 ,这样业务逻辑清晰并且也很好扩展和维护。

相关推荐
Penk是个码农5 小时前
web前端面试-- MVC、MVP、MVVM 架构模式对比
前端·面试·mvc
圆滚滚肉肉2 天前
后端MVC(控制器与动作方法的关系)
后端·c#·asp.net·mvc
ajassi20002 天前
开源 C# .net mvc 开发(六)发送邮件、定时以及CMD编程
linux·开源·c#·mvc
blackA_12 天前
JavaWeb学习——day8(MVC模式与session、cookie)
学习·mvc
PHASELESS41113 天前
深入理解Spring MVC:构建灵活Web应用的基石
java·网络·后端·spring·mvc
王有品16 天前
Spring MVC 会话管理实践教程:HttpSession 深入应用
java·spring·mvc
lwb_011816 天前
Spring MVC参数绑定终极手册:单&多参对象集合JSON文件上传精讲
spring·json·mvc
我的炸串拌饼店17 天前
ASP.NET MVC 中SignalR实现实时进度通信的深度解析
后端·asp.net·mvc
CUIYD_198917 天前
Spring MVC 处理静态资源请求 - ResourceHandler
java·spring·mvc
武帝为此20 天前
【SpringMVC 入门介绍】
java·spring·mvc