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

相关推荐
又是忙碌的一天2 天前
SpringMVC的处理流程
java·mvc
派大鑫wink2 天前
【Day37】MVC 设计模式:原理与手动实现简易 MVC 框架
java·设计模式·mvc
卓怡学长2 天前
m111基于MVC的舞蹈网站的设计与实现
java·前端·数据库·spring boot·spring·mvc
码界奇点4 天前
基于Spring MVC的缺陷管理系统设计与实现
java·spring·车载系统·毕业设计·mvc·源代码管理
工业甲酰苯胺4 天前
如何一步步将 ASP.NET MVC 升级为.NET
asp.net·mvc·.net
雪人.4 天前
Spring MVC经典面试
java·spring·mvc
我来整一篇6 天前
[Razor] ASP.NET Core MVC 前端组件快速使用总结
前端·asp.net·mvc
lang201509286 天前
Spring MVC文件上传:commons-fileupload解析全流程
java·spring·mvc
岁岁种桃花儿6 天前
Spring Boot核心注解详解:@ResponseBody深度解析与实战
spring boot·spring·mvc
xiaolyuh1239 天前
Spring MVC Bean 参数校验 @Validated
java·spring·mvc