三层架构+MVC(六)

什么是三层架构?

三层构架

  • 三层架构是一个分层式的软件体系架构设计,它适用于任何一个项目

  • 三层架构是指:视图层 View、服务层 Service,与持久层 DAO。它们分别完成不同的功能。

  • View 层:用于接收用户提交请求的代码

  • Service 层:系统的业务逻辑主要在这里完成

servet (服务器小程序) 1.处理业务逻辑 2.处理页面显示。
jsp 就是Servet 处理页面显示也是技术。小脚本也可以处理逻辑

  • DAO 层:直接操作数据库的代码

  • 为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程。即上层对下层的调用,是通过接口实现的。而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换。这就实现了层间解耦合。

三层架构+MVC(六)

什么是 MVC 模式

MVC,即 Model 模型、View 视图,及 Controller 控制器。

  • View:视图,为用户提供使用界面,与用户直接进行交互。

  • Model:模型,承载数据,并对用户提交请求进行计算的模块。==其分为两类,一类称为数据承载 Bean,一类称为业务处理 Bean。==所谓数据承载 Bean 是指实体类,专门用户承载业务数据的,如 Student、User 等。而业务处理 Bean 则是指 Service 或 Dao 对象, 专门用于处理用户提交请求的。

  • Controller:控制器,用于将用户请求转发给相应的 Model 进行处理,并根据 Model 的计算结果向用户提供相应响应。

MVC 架构程序的工作流程

  • 用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX 请求等
  • 服务端 Controller 控制器接收到请求后对请求进行解析,找到相应的 Model 对用户请求进行处理
  • Model 处理后,将处理结果再交给 Controller
    Controller 在接到处理结果后,根据处理结果找到要作为向客户端发回的响应 View 页面。页面经渲染(数据填充)后,再发送给客户端。

    三层架构+MVC(六)

三层架构 + MVC 示意图

  • MVC 在三层架构的视图层如下图
    三层架构+MVC(六)

两者之间的区别

一、 MVC与三层架构区别
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念。下面我来为大家揭晓我所知道的一些真相。
首先 mvc 和 三层架构根本不是一个概念!!!
三层构架

三层架构是一个分层式的软件体系架构设计,它适用于任何一个项目

MVC

mvc是一种设计模式,并不是所有的项目都能使用。它是根据项目的具体需求来决定是否适用于该项目。

那么架构跟设计模式有什么区别呢?

从项目的角度说
  • 当我们拿到一个项目,我们需要先进行分层式框架的设计,一般采用的都是三层框架
  • 而后,我们再根据项目的具体需求去考虑是否需要应用一些设计模式。比如我们所提到的MVC,抽象工厂模式等等。(在这里我们看出,MVC与三层架构不是一个等级的,而与抽象工厂等设计模式才是一路的)
  • 最后,确定了模式以后,就是我们的一些具体的实现了。

层次不同。

三层框架将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

mvc分为模型(MODEL)、视图(View)、 控制(Controller).

三层架构+MVC(六)

而我们通常所见到的MVC一般也都是在应用三层架构的基础上,即将Model层再进行分层。而如果Model不再进行划分的话,那么使用MVC的意义也就不大了。

然后,它俩的目的着重点不同。

  • 三层架构的目的着重点是“高内聚,低耦合”,即解耦。
  • MVC的目的则是实现Web系统的职能分工,即职责划分。
  • 其实职责划分也是解耦,但是三层侧重的是整体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。

什么是高内聚、低耦合

这个概念是软件工程中的一个概念,是判断设计好坏的标准。简而言之,就是看类的内聚性是否高,耦合度是否低

高内聚

一个软件模块必须由关联性很强的代码组成,也就是一个模块只做一件事。

低耦合

不同的模块之间互相关联的程度是否足够低,面向对象变成面向接口编程(实例,改造dao并采取面向接口编程)。

下一节三层架构代码实现