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

相关推荐
StackNoOverflow19 小时前
Spring MVC零散知识点记录
java·spring·mvc
码界奇点20 小时前
基于Spring MVC和MyBatis的妖气山视频管理系统设计与实现
java·spring·毕业设计·mvc·mybatis·源代码管理
波波0071 天前
ASP.NET MVC 中的返回类型全集详解
后端·asp.net·mvc
张人玉2 天前
C# 中的 MVC、MVP、MVVM 模式详解
开发语言·c#·mvc·mvvm·mvp
weixin_704266052 天前
SpringMVC基础了解
java·spring·mvc
独断万古他化2 天前
【抽奖系统开发实战】Spring Boot 活动模块设计:事务保障、缓存优化与列表展示
java·spring boot·redis·后端·缓存·mvc
武超杰2 天前
SpringMVC入门指南:从零开始掌握核心用法
java·spring·mvc
青槿吖2 天前
第二篇:Spring MVC进阶:注解、返回值与参数接收的花式玩法
java·开发语言·后端·mysql·spring·mvc·mybatis
小旭95272 天前
Spring MVC :从入门到精通(上)
java·后端·spring·mvc·intellij-idea
StackNoOverflow2 天前
Spring MVC核心知识点快速梳理
java·spring·mvc