DDD(领域驱动设计)

294 阅读2分钟

基于充血模型的面向对象开发模式是DDD的特点之一,而在平时开发中我们都使用的是MVC 架构是基于贫血模型的面向过程开发风格。

MVC 架构

MVC 三层架构中的 M 表示 Model,V 表示 View,C 表示 Controller。它将整个项目分为三层:模型层、视图层、控制层。

image.png

Model层:在模型层中又可以分为两层,即Service层和Dao层,这两层的主要功能是:

  • Service层:负责一些业务处理,比如说:获取数据库连接,关闭数据库连接,事务回滚或者一些复杂的逻辑业务处理

  • Dao层:(Database Accept Object) 负责访问数据库,对数据的操作,获取结果集,将结果集中的数据装到OV(Object Value)对象中,之后再返回给Service层

Controller层:主要功能是处理用户的请求

View层:主要负责显示数据(Html、Css、jQuery等等)

DDD 架构

MVC 模式的开发,大部分都是 SQL 驱动(SQL-Driven)的开发模式。我们接到一个后端接口的开发需求的时候,就去看接口需要的数据对应到数据库中,需要哪张表或者哪几张表,然后思考如何编写 SQL 语句来获取数据。

而 DDD 开发模式下,我们需要事先理清楚所有的业务,定义领域模型所包含的属性和方法。领域模型相当于可复用的业务中间层。新功能需求的开发,都基于之前定义好的这些领域模型来完成。越复杂的系统,对代码的复用性、易维护性要求就越高,我们就越应该花更多的时间和精力在前期设计上。DDD 开发模式,正好需要我们前期做大量的业务调研、领域模型设计,所以它更加适合这种复杂系统的开发。

在基于充血模型的 DDD 开发模式中,哪些功能逻辑会放到 Service 类中?

Service 类负责与 Repository 交流。将流程性的代码逻辑与领域模型的业务逻辑解耦,让领域模型更加可复用。 Service 类负责跨领域模型的业务聚合功能。 Service 类负责一些非功能性及与三方系统交互的工作。

学习链接:
Web 开发选 MVC 还是 DDD?
DDD领域驱动设计:贫血模型和充血模型详解