三层架构+MVC(六)
什么是三层架构?
三层构架
-
三层架构是一个分层式的软件体系架构设计,它适用于任何一个项目
-
三层架构是指:视图层 View、服务层 Service,与持久层 DAO。它们分别完成不同的功能。
-
View 层:用于接收用户提交请求的代码
-
Service 层:系统的业务逻辑主要在这里完成
servet (服务器小程序) 1.处理业务逻辑 2.处理页面显示。
jsp 就是Servet 处理页面显示也是技术。小脚本也可以处理逻辑
-
DAO 层:直接操作数据库的代码
-
为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程。即上层对下层的调用,是通过接口实现的。而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换。这就实现了层间解耦合。
什么是 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与三层架构不是一个等级的,而与抽象工厂等设计模式才是一路的)
- 最后,确定了模式以后,就是我们的一些具体的实现了。
层次不同。
三层框架将整个项目划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
mvc分为模型(MODEL)、视图(View)、 控制(Controller).
而我们通常所见到的MVC一般也都是在应用三层架构的基础上,即将Model层再进行分层。而如果Model不再进行划分的话,那么使用MVC的意义也就不大了。
然后,它俩的目的着重点不同。
- 三层架构的目的着重点是“高内聚,低耦合”,即解耦。
- MVC的目的则是实现Web系统的职能分工,即职责划分。
- 其实职责划分也是解耦,但是三层侧重的是整体的一个解耦,而MVC侧重的是web系统的解耦,即侧重jsp和Servlet的一个解耦。
什么是高内聚、低耦合
这个概念是软件工程中的一个概念,是判断设计好坏的标准。简而言之,就是看类的内聚性是否高,耦合度是否低
高内聚
一个软件模块必须由关联性很强的代码组成,也就是一个模块只做一件事。
低耦合
不同的模块之间互相关联的程度是否足够低,面向对象变成面向接口编程(实例,改造dao并采取面向接口编程)。
下一节三层架构代码实现