携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
三层架构的一些体会
什么是三层架构?
将三层架构之前要讲一下MVC设计模式的,
MVC设计模式是将应用代码分层, 分成模型Model, 视图View, 控制Control层, 目的是将代码解耦, 以避免一个视图层的改动要影响到很多代码的改动.
举个列子:
MVC设计模式
Model
数据模型和对数据的操作, 如User类, 对user对象的操作包括:
- 注册
- 登录
- 查询
- 修改
- 注销
应用Model的场景:
- User对象
- 注册用户的业务逻辑
View 视图
可以理解为页面, 页面显示的内容将对用户展示
应用View的功能场景:
- respons.getWriter().println()
Controller 控制
在Model和View之间起沟通的作用, 以松散Model和View之间的耦合程度.
应用Controller的功能场景:
- serlvet调用model层的功能实现用户登录, 然后将状态码返回给view层
整个用户登录流程
分层后一个User的登录流程可以分为如下几个步骤:
- 服务器程序访问controller代码
- controller调用model代码
- controller层根据model返回值, 决定调用哪个View视图
这样的分层的优势在于:
- 实现model和view之间没有耦合
- 所以model的业务变更, 不会对view产生影响
MVC设计模式
三层架构指的是展示层, 业务层, 数据层,
- 展示层: controller+view
- 数据层: dao方法
- 业务层: 中间写业务
他针对于MVC设计模式的主要优化在于,
-
展示层被细分为view和controller, 其中用于向用户的展示层view被分离给前端代码编写, 而controller层用于和前端对接, 接收前端传来的数据, 初步处理后传递给之后的业务层
-
业务层的作用被重点拉出来强调, 之所以要在controller层和dao层之间插入一个业务层, 其实也是为了解耦, 这样前端需要的数据有变化, 在原来的模式下, 可能会使得每一层都做出修改, 而加入业务层之后, 由controller层接收数据, 初步解析后传递到service层, service层只需要加上新改动的业务代码, 而如果dao层设计的好, 那么dao层几乎不需要修改, 只要service层调用dao层不同的方法, 就可以实现功能, 这里满足了开闭原则.
-
dao层与controller分离后, 可以用不同的实现方式来实现dao层. 因为dao层直接处理数据, 而根据数据的存储方式不同, dao层的功能方法是相同的, 但具体实现有可能不同, 举个例子, 将数据存储在mysql里和将数据存储在redis里的dao层实现就不同, 将dao层与其他层解耦后, 我们可以有多种dao层的实现方式, 然后service增只需要根据不同的业务需求调用不同的dao层.
怎么强化自己对mvc和三层架构的理解?
- 理清概念
- 写项目, 写项目, 写项目!
重要的事情说三遍!