该片文章主要是对 Spring MVC应用分层(三层架构)进行简单的介绍和学习。
一、介绍
1、什么是应用分层
应用分层 是一种
软件开发设计思想
, 它将应用程序分成N个层次,
这N个层次分别负责各自的职责,
多个
层次之间协同提供完整的功能. 根据项目的复杂度, 把项目分成三层, 四层或者更多层.
常见的MVC设计模式, 就是应用分层的⼀种具体体现。
2、为什么需要应用分层
对于一个项目,如果随着业务越来越复杂,大量的
代码混在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等
问题. 所以学习对项目进行分层是非常必要的。
二、如何分层(三层架构)
"MVC", 就是把整体的系统分成了 Model(模型), View(视图)和Controller
(控制器)三个层次,也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现
了表现和逻辑的解耦,是⼀种标准的软件分层架构。
现在,对于Java后端开发者, 又有了一种新的分层架构:
把整体架构分为表现层、业务逻辑层和数据层. 这种分层方式也称之为"三层架构".
- 表现层: 就是展示数据结果和接受用户指令的,是最靠近用户的⼀层;
- 业务逻辑层: 负责处理业务逻辑, 里面有复杂业务的具体实现;
- 数据层: 负责存储和管理与应用程序相关的数据
下面看一个不符合这种设计思想的代码例子:
按照上面的层次划分(
把整体架构分为表现层、业务逻辑层和数据层
), Spring MVC 也进行了支持, 把上面的代码划分为三
个部分:
- 请求处理、响应数据:负责接收页面的请求,给页面响应数据.
- 逻辑处理:负责业务逻辑处理的代码.
- 数据访问:负责业务数据的维护操作,包括增、删、改、查等操作.
这三个部分, 在Spring的实现中, 均有体现:
- Controller:控制层。接收前端发送的请求,对请求进行处理,并响应数据。
- Service:业务逻辑层。处理具体的业务逻辑。
- Dao:数据访问层,也称为持久层。负责数据访问操作,包括数据的增、删、改、查.
三、MVC 和三层架构的区别和联系
关于二者的关系, ⼀直存在不同的观点. 有人认为三层架构是MVC模式的⼀种实现, 也有人认为MVC是三层架构的替代方案等等。
从概念上来讲, 二者都是软件工程领域中的架构模式。
MVC架构模式由三部分组成, 分别是: 模型(Model), 视图(View)和控制器(Controller).
三层架构将业务应用划分为:表现层, 业务逻辑层, 数据访问层。
MVC中, 视图和控制器合起来对应三层架构中的表现层.模型对应三层架构中的业务逻辑层, 数据层, 以及实体类。
二者其实是从不同角度对软件工程进行了抽象.
MVC模式强调
数据和视图分离
, 将数据展示和数据处理分开, 通过控制器对两者进行组合.
三层架构强调
不同维度数据处理的高内聚和低耦合
, 将交互界面, 业务处理和数据库操作的逻辑分开。
二者的目的是相同的, 都是"解耦,分层,代码复用"。
软件设计原则:高内聚低耦合.高内聚指的是:⼀个模块中各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联 系程度越高,则内聚性越高,即 "高内聚"。低耦合指的是:软件中各个层、模块之间的依赖关联程度越低越好。修改⼀处代码, 其他模块的代码 改动越少越好。
四、应用分层的好处
- 降低层与层之间的依赖, 结构更加的明确, 利于各层逻辑的复用
- 开发人员可以只关注整个结构中的其中某⼀层, 极大地降低了维护成本和维护时间
- 可以很容易的用新的实现来替换原有层次的实现
- 有利于标准化