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

相关推荐
Cyan_RA916 小时前
SpringMVC 请求数据绑定与参数映射 详解
java·后端·spring·mvc·springmvc·映射请求数据
Cyan_RA93 天前
SpringMVC REST 详解
java·spring·mvc·springmvc·restful·jquery·jsp
budingxiaomoli6 天前
Spring Web MVC 知识总结
spring·mvc
虾米Life7 天前
MVC与MVVM 架构
架构·mvc·mvvm
笛卡尔的心跳9 天前
Spring MVC 注解
java·spring·mvc
小松加哲9 天前
Spring MVC 核心原理全解析
java·spring·mvc
那个失眠的夜10 天前
RESTful 语法规范 核心注解详解
java·spring·mvc·mybatis
羌俊恩10 天前
Centos环境django项目部署过程
django·flask·centos·mvc·mtv·web项目框架
Foreer黑爷12 天前
Spring MVC原理与源码:从请求到响应的全流程解析
java·spring·mvc
曹牧13 天前
Spring MVC中使用HttpServletRequest和HttpServletResponse
java·spring·mvc