MVC设计模式

MVC设计模式

一、认识MVC

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式是Java语言官方根据三层架构模式中的表示层(UI)设计而来,规范了一个模块下程序的结构,用于Web应用程序的分层开发。

当用户发出操作时,视图把消息发给控制器,控制器按照业务逻辑进行处理,需要查询或更新数据时,控制器会调用模型。

MVC架构把数据处理,程序输入输出控制及数据显示分离开来,并且描述了不同部件的对象间的通信方式。使得软件可维护性,可扩展性,灵活性以及封装性大大提高。

  • Model(模型层):模型代表一个存取数据的对象(JavaBean)或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制,如登陆、增加、删除、修改功能。即负责数据管理
  • View(视图层):视图代表模型包含的数据的可视化,负责将数据模型展示在浏览器上,如前端技术(html、js、css、jsp、模板…),即负责数据显示
  • Controller(控制层):控制器作用于模型和视图上,它控制数据流向模型对象,使视图与模型分离开,并在数据变化时更新视图。如负责程序中请求的相关控制,接收请求,响应,处理请求…即负责业务逻辑和响应策略

JavaBean:

  • JavaBean是Java语言中一种特殊的类,当然你也可以简单理解为一个Java类,当它满足以下两个要求便可以称之为JavaBean:
    • public修饰的类,并提供了public修饰的无参构造.
    • 所有属性都使用private进行封装,并提供 Getter and Setter 方法进行访问操作。
  • 从使用层面来看,JavaBean又分为如下两类:
    • 封装了业务逻辑的JavaBean:如负责登陆、增删改查的JavaBean。
    • 封装了数据的JavaBean:一般来说对应数据库中的一张表,如一张用户表就对应一个 User.java 类。
  • JavaBean具备复用性,即一次编写,处处可用。比如多个显示页面可以共享一个 User.java 类中的属性。

以 Servlet 及 JSP 开发过程为例,JavaBean 相当于 Model,Servlet 相当于 Controller,JSP 相当于 View。

Servlet + JSP + JavaBean:

Servlet+JSP+JavaBean 中 JSP 相当于视图层(View)负责前台页面显示数据。JavaBean 相当于模型层(Model)负责创建 JavaBean 与 JAVA POJO,即负责封装数据表的同时还要负责提供具体的业务逻辑操作。Servlet 相当于控制层(Controller)只负责调用模型层(Model)提供的具体方法完成业务逻辑和响应策略,自身并不作具体实现,可以理解为中转站。

控制器本身不输出任何信息和做任何处理,它只负责把用户的请求转成针对Model的操作,和调用相应的视图来显示Model处理后的数据。

Servlet+JSP+JavaBean 模式的结构清晰,是一个松耦合架构模式,一般情况下,建议使用该模式。

二、为什么要在Web应用中使用MVC架构

用户界面逻辑的更改往往比业务逻辑频繁,尤其是在基于Web的应用程序中。因此我们就要做到对于视图层(View)的更改,尽可能地不要影响到模型层(Model)和业务逻辑层(Controller)。

可见MVC的思想是从根本上强制性地将这三层进行分离,尽管构造MVC应用需要一些额外的工作,但在大型Web应用程序中它带来的好处是无庸质疑的。

所以总结如下:

  • 提高代码重用率:多个视图(View)可共享一个模型(Model)。
  • 提高程序可维护性:视图层、模型层和控制层相互对立,当某一层有需求改变时只需要改变其中一层即可。
  • 有利于团队开发:个人能力参差不齐的团队开发中,采用MVC开发是非常理想的。

三、MVC架构的优点

1.MVC的优点

  • 多视图共享一个模型,提高代码可重用性。
  • 三个模块相互独立,松耦合架构。发生在哪一层的变化,只需更改该层,不需要更改整个系统。
  • 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作,需要做的只是在新平台上对视图和控制器进行新的修改。
  • 控制器提高了应用程序的灵活性和可配置性。
  • 有利于团队开发分工协作和质量控制,降低开发成本。

2.MVC的缺点

  • 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
  • 视图对模型数据的访问效率低。视图可能需要多次调用Model才能获得足够的显示数据。
  • 完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难。

MVC 并不适合小型甚至中型规模的项目,花费大量时间将 MVC 应用到规模并不是很大的应用程序,通常得不偿失,所以对于 MVC 设计模式的使用要根据具体的应用场景来决定。


参考资料:

  1. https://www.runoob.com/design-pattern/mvc-pattern.html
  2. https://www.cnblogs.com/xhj123/p/6170975.html
  3. http://c.biancheng.net/spring_mvc/mvc.html
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值