MVC与三层架构的区别

MVC

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  • Model(模型):模型代表一个存取数据的对象或JAVA POJO. 它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图): 视图代表模型包含的数据的可视化。
  • Controller(控制器): 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

MVC架构程序的工作流程是这样的:

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

MVC与三层架构的区别_第1张图片

三层架构

三层架构是指:表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)

  • 1、视图层(View):存放接收用户提交请求的代码
  • 2、服务层(Service):存放系统的业务逻辑代码
  • 3、持久层(Dao):存放直接操作数据库的代码

每一层都各负其责,那么该如何将三层联系起来呢?

  • 1、单项引用(见下图)
  • 2、这时候实体层(Entity)来了。(注:当然,实体层的作用不止这些)

MVC与三层架构的区别_第2张图片

Entity(实体层):它不属于三层中的任何一层,但是它是必不可少的一层。

Entity在三层架构中的作用:

  • 1、实现面向对象思想中的"封装";
  • 2、贯穿于三层,在三层之间传递数据;(注:确切的说实体层贯穿于三层之间,来连接三层)
  • 3、对于初学者来说,可以这样理解:每张数据表对应一个实体,即每个数据表中的字段对应实体中的属性(注:当然,事实上不是这样。为什么?1>,可能我们需要的实体在数据表对应的实体中并不存在;2>,我们完全可以将所有数据表中的所有字段都放在一个实体里)
  • 4、每一层(UI—>BLL—>DAL)之间的数据传递(单向)是靠变量或实体作为参数来传递的,这样就构造了三层之间的联系,完成了功能的实现。

为什么使用三层?

使用三层架构的目的:解耦!!!

任何一层发生变化都不会影响到另外一层!!!

MVC与三层架构的区别_第3张图片

综上,三层架构的优势:

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

MVC与三层架构的关系

MVC与三层架构很相似,但它们并不一样。如果以三层架构为背景,那么MVC的三个部分分别对应的是什么?

三层架构中的View层简单的说就是跟用户发生直接关系的层,MVC中的V和C就是这样的存在,所以MVC中的V和C均属于三层架构的View层。同时,我们知道MVC中的M(Model)包括了数据承载Bean和业务处理Bean,其中业务处理Bean分为Service或Dao对象,分别对应业务逻辑处理和数据库操作,相应的,它们对应的是三层架构中的Service层和Dao层。故,它们的关系如下图所示:

MVC与三层架构的区别_第4张图片

所以,三层架构与mvc还是有区别的。

MVC与三层架构的区别_第5张图片

MVC是表现层的一个设计模型

SSM与三层架构的关系

SSM即SpringMVC、Spring、Mybatis三个框架。它们在三层架构中所处的位置是不同的,即它们在三层架构中的功能各不相同,各司其职。

  • SpringMVC:作为View层的实现者,完成用户的请求接收功能。SpringMVC的Controller作为整个应用的控制器,完成用户请求的转发及对用户的响应。
  • MyBatis:作为 Dao层的实现者,完成对数据库的增、删、改、查功能。
  • Spring:以整个应用大管家的身份出现。整个应用中所有的Bean的生命周期行为,均由Spring来管理。即整个应用中所有对象的创建、初始化、销毁,及对象间关联关系的维护,均由Spring进行管理。

MVC与三层架构的区别_第6张图片

你可能感兴趣的:(mvc,设计模式,数据库,java)