三层架构的一些体会

169 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

三层架构的一些体会

什么是三层架构?

将三层架构之前要讲一下MVC设计模式的,

MVC设计模式是将应用代码分层, 分成模型Model, 视图View, 控制Control层, 目的是将代码解耦, 以避免一个视图层的改动要影响到很多代码的改动.

举个列子:

MVC设计模式

Model

数据模型和对数据的操作, 如User类, 对user对象的操作包括:

  • 注册
  • 登录
  • 查询
  • 修改
  • 注销

应用Model的场景:

  1. User对象
  2. 注册用户的业务逻辑

View 视图

可以理解为页面, 页面显示的内容将对用户展示

应用View的功能场景:

  1. respons.getWriter().println()

Controller 控制

在Model和View之间起沟通的作用, 以松散Model和View之间的耦合程度.

应用Controller的功能场景:

  1. serlvet调用model层的功能实现用户登录, 然后将状态码返回给view层

整个用户登录流程

分层后一个User的登录流程可以分为如下几个步骤:

  1. 服务器程序访问controller代码
  2. controller调用model代码
  3. controller层根据model返回值, 决定调用哪个View视图

这样的分层的优势在于:

  1. 实现model和view之间没有耦合
  2. 所以model的业务变更, 不会对view产生影响

MVC设计模式

三层架构指的是展示层, 业务层, 数据层,

  1. 展示层: controller+view
  2. 数据层: dao方法
  3. 业务层: 中间写业务

他针对于MVC设计模式的主要优化在于,

  1. 展示层被细分为view和controller, 其中用于向用户的展示层view被分离给前端代码编写, 而controller层用于和前端对接, 接收前端传来的数据, 初步处理后传递给之后的业务层

  2. 业务层的作用被重点拉出来强调, 之所以要在controller层和dao层之间插入一个业务层, 其实也是为了解耦, 这样前端需要的数据有变化, 在原来的模式下, 可能会使得每一层都做出修改, 而加入业务层之后, 由controller层接收数据, 初步解析后传递到service层, service层只需要加上新改动的业务代码, 而如果dao层设计的好, 那么dao层几乎不需要修改, 只要service层调用dao层不同的方法, 就可以实现功能, 这里满足了开闭原则.

  3. dao层与controller分离后, 可以用不同的实现方式来实现dao层. 因为dao层直接处理数据, 而根据数据的存储方式不同, dao层的功能方法是相同的, 但具体实现有可能不同, 举个例子, 将数据存储在mysql里和将数据存储在redis里的dao层实现就不同, 将dao层与其他层解耦后, 我们可以有多种dao层的实现方式, 然后service增只需要根据不同的业务需求调用不同的dao层.

怎么强化自己对mvc和三层架构的理解?

  1. 理清概念
  2. 写项目, 写项目, 写项目!

重要的事情说三遍!