三层架构与MVC相关知识点

MVC模式和三层架构

1.MVC模式:

Moudel-View-Controller简写

架构模式,它是一个可以进行分离业务逻辑、与显示的设计方法、它把软件系统分为三个基本部分:

模型(model)、视图 (View) 、控制器(Controller)

控制器:对请求进行处理、负责请求转发

视图:界面的设计人员进行界面设计

模型:编写程序应用的功能、数据库管理

2.三层架构:

服务器端程序分为三层,根据逻辑分层,经典:表示层、业务逻辑层、数据访问层。

表示层:又称为web层、与浏览器进行交互的。

业务逻辑层:又称为services层, 专门处理业务

数据访问层:又称为dao层, 与数据库进行数据交换的。将数据库与记录的JavaBean进行对应。

三层架构搭建: .

1.搭建环境:导入jar包、配置文件、实体类、工具类

2.编写web层

3.编写services层代码

4.编写dao层代码

MVC与三层架构 系统架构是指,整合应用系统程序大的结构。

经常提到的系统结构有两种:三层架构和MVC

他们这两种结构既有区别,又有联系。但这两种结构的使用,均是为了降低系统模块间的耦合度。

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

View 层:用于接收用户提交请求的代码在这里编写。

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

Dao 层:直接操作数据库的代码在这里编写。

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

 

2.MVC

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

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

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

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

MVC 架构程序的工作流程: (1)用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX 请求等 (2)服务端

Controller 控制器接收到请求后对请求进行解析,找到相应的 Model 对用户请求进行处理 (3)Model 处理后,将处理结果再交给

Controller (4)Controller 在接到处理结果后,根据处理结果找到要作为向客户端发回的响应 View 页面。页面经渲染(数据填充)后,

再发送给客户端。

3.MVC与三层架构的关系:

 

三层架构是什么?

首先我们要明白三层架构的内容有哪些。官方的解释是三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。

官方给的解释其实也并不难理解,我们在开发一个完整的功能模块的时候,肯定会有用户界面,根据用户的选择实现不同的代码逻辑,而逻辑处理往往大部分都是在和数据库打交道,需要对数据进行增删改查。那么为了让代码的实现更加的有条理、有逻辑,我们就把用户界面、逻辑处理、与数据库的交互分开实现,至于为什么各层之间采用接口相互访问,下面说第三点的时候着重说明。

为什么要用三层架构?

在真实的业务开发中,往往是需要团队合作开发的,毕竟一个完整的实际项目,它的开发周期会很长,这就意味着里面会有非常多的功能模块,比如一个简单的图书管理系统,就有管理员对图书的增删改查、对用户的增删查改,用户对图书的增删查改等等。这样的一个简单项目由一个团队来开发只需要一到两天即可,而我们却用了整整两周不止。

那么既然需要团队协同开发,自然离不开功能模块的划分了,这时候就需要使用三层架构的思想了,在三层架构中,各层互相独立,完成自己该完成的任务,项目可以多人同时开发,开发人员可以只关注整个结构中的其中某一层(自己负责的那一层即可)。举一个简单的例子,我们要在数据库查找一个人,那么首先需要一个方法去数据库查找,需要查找的条件,比如id,那么我们就初步建立了一个方法 findById(int id),找到之后我们需要打印这个人的信息,那方法就进一个完善,有了返回值 User findById(int id)。这个方法是用来在数据库进行查询的,那万一没有这个人呢,或者找到这个人我需要把这个人进行一些列的包装处理呢?这一些列的操作我们可以把它放在逻辑处理层来,在逻辑处理层创建一个方法,处理完了之后,返回给用户界面。

从另一个方面来说,三层架构有利于各层逻辑的复用,比如上面说到的图书管理系统中管理员可以对图书进行增删查改,我们将这些方法放在一个类中,再出现对用户的增删查改时,我们就可以复用这些代码,修改参数和返回值类型即可。

这样分层处理,也更有利于代码的移植、维护,比如数据库SQLServer 转 Oracle数据库时,我们只需要修改一个层即可,因为与数据库的交互都在数据访问层中。

 

 

 

 

三层架构的优劣势:


  - 1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
    - 2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码
    - 3、增加了代码量,增加了工作量

三层架构的优势:


    - 1,结构清晰、耦合度低
    - 2,可维护性高,可扩展性高
    - 3,利于开发任务同步进行, 容易适应需求变化

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值