Java的MVC设计模式,带你深刻理解MVC

发布时间 2023-06-30 23:55:38作者: 二进制狂人

什么是MVC?就是Model View Control,模型视图控制器。

MVC流程图解

1.MVC概念:

MVC本来是存在于Desktop程序中的,M(Model)是指数据模型,V(View)是指用户界面,C(Control)是控制器。使用MVC的最直接目的就是将M和V实现代码分离,C则是确保M和V的同步,一旦M改变,V应该同步更新。

2.MVC工作方式:

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

  • 视图

    视图就是用户直接看到的并且可以与之交互界面。比如用Html元素组成的界面,以及包括一些flash等等。MVC一个很有用的好处就是,能为你的应用程序处理很多不同的视图,然而在视图中却没有真正的处理发生。

  • 模型

    模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。

    同时由于模型的代码只需写一次就可以被多个视图重用,所以,减少了代码的冗余度。

  • 控制器

    控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

由上我们总结一下MVC的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

3.使用MVC的原因

很多对于Web应用程序来说,经常会出现将数据层代码和html等类似的表现层代码混在一起,经验丰富的则会把他们分离开,但是对于经验较少的,就难上加难了。因此,MVC从本质上,强制性的将他们分离开来。

①使用MVC最重要的原因就是,多个视图可以共享一个模型,由于你已经将数据和业务规则分开来,能最大程度减少代码的冗余度,最大化的冲用你的代码,这样,在后期的维护阶段,也能减轻很多压力。

②再者,由于运行MVC的应用程序的三个部分是相互独立的,改变其中一个不会影响另外两个,在设计思想中,我们就可以轻松的看到这种高内聚低耦合的优点。

③最后,控制器来链接不同的模型和视图去完成用户的需求。给定一些可重用的模型的视图,控制器就可以很轻松的根据用户的需求选择模型就行处理。这个操作看起来就很便捷。

4.MVC的缺点:

任何一件事物,都有两面性,MVC也是如此,主要有以下三点:

  • 没有明确的定义

    完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。

  • MVC并不适合小型甚至中等规模的应用程序

    花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。

  • 增加系统结构和实现的复杂性

    对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

最后,在java中, 最典型的MVC就是Jsp + Servlet + JavaBean的模式。