1、什么是mvc模式?什么是DDD模式

1.1 什么是贫血模型?

首先认识下什么是MVC模式,M 标识Model模展示层、V表示视图、C表示Controller视图逻辑控制层逻辑层.。

代码举例
代码详情参见git
https://gitee.com/daoshizhuagui/designpatene.git如下图
image.png
image.png
以上模型就是典型的 贫血模型 几乎所有的业务后端系统,都是基于贫血模型的

只包含数据,不包含业务逻辑的类,就叫作贫血模型

UserEntity、UserVo 都是基于贫血模型设计的。这种贫血模型将数据与操作分离,破坏了面向对象的封装特性,是一种典型的面向过程的编程风格。


1.2 什么是充血模型的DDD开发模式?

1.2.1 什么是充血模型

数据和对应的业务逻辑被封装到同一个类中。因此,这种充血模型满足面向对象 的封装特性,是典型的面向对象编程风格


1.2.2 什么是领域驱动设计(DDD)?

来指导如何解耦业务系统,划分业务模块,定义业务领 域模型及其交互 除了监控、调用链追踪、API 网关等服务治理系统的开发之外,微服务还有另外 一个更加重要的工作,那就是针对公司的业务,合理地做微服务拆分。而领域驱动设计恰好 就是用来指导划分服务的。所以,微服务加速了领域驱动设计的盛行 。

它跟基于贫血模型的传统开发模式的区别主要在 Service 层
11、业务开发常用的基于贫血模型的MVC架构违背 OOP吗? - 图3


1.2.3 为什么基于贫血模型的传统开发模式如此受欢迎?

  1. 我们开发的系统业务可能都比较简单,简单到就是基于 SQL 的 CRUD 操作,所以,我们根本不需要动脑子精心设计充血模型
  2. 充血模型的设计要比贫血模型更加有难度。因为充血模型是一种面向对象的 编程风格。
  3. 思维已固化,转型有成本

1.2.4 什么项目应该考虑使用基于充血模型的 DDD 开发模式?

基于充血模型的 DDD 开发模式,更适合业务复杂的系统开发 举例: 包含各种利息 计算模型、还款模型等复杂业务的金融系统, 还有一个非常重要的区别,那就是两种不同的开发模式会导致不同的开发流 程。基于充血模型的 DDD 开发模式的开发流程,在应对复杂业务系统的开发的时候更加有 优势 业务逻辑包裹在一个大的 SQL 语句中,而 Service 层可以做的事情很少。SQL 都是针对特 定的业务功能编写的,复用性差