今天我们来聊一下JavaEE中常用的一个架构模式,就是MVC,很多同学上课的时候限于时间和篇幅,并没有搞懂MVC的架构模式到底是个什么东西,所以在这详细解释一下,希望能帮助大家加深理解。 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。不同的技术人员可以通过自身的专长分组: (控制器Controller)- 负责转发请求,对请求进行处理。 (视图View) - 界面设计人员进行图形界面设计。 (模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。 模型图如下: 首先是视图层:作为视图来说,它并不去真正的处理逻辑或者获取数据,也不关心逻辑如何处理,数据从何而来,它的任务就是将数据展现给用户,然后从用户处获取到想要提交给服务器的数据。也就是用户交互的部分。 然后是控制层:作为控制层,它也不是执行逻辑的地方,但是它能接收从视图层从用户那获取的相关参数或者数据,然后分配给模型层的具体类去执行相关的操作,就像一个部门经理,也许他并不知道如何去做一件事情,但是他肯定知道谁最适合做这件事情并分配任务下去(这是非常重要的一个能力!)。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。 最后是模型层:作为模型层,它会按照控制层分配的任务执行业务逻辑,如果涉及到数据库的使用,也会进行数据的存储、获取或修改。而且,它会向控制层返回执行的结果,然后由控制层把结果转给视图层去展示。 这样看,每一层的分工就明确了,视图层获取用户的数据交由控制层,控制层得到用户的意图之后,控作为纽带来连接模型层,将具体的业务逻辑分配下去,模型层得到任务执行业务逻辑进行处理,然后再把结果返回,由控制层交给视图层显示给用户查看。每一个模块都只负责自己的任务而不会关心其他模块具体做了什么。 那么MVC的架构模式到底有什么好处呢? 1.低耦合性 视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。 2.高重用性和可适用性 随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何 WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是 一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这 些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。 3.较低的生命周期成本 MVC使开发和维护用户接口的技术含量降低。 4.快速的部署 使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。 5.可维护性 分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。 6.有利于软件工程化管理
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。 这样说完,是不是对MVC有了新的理解呢。希望通过这篇文章,能够帮助大家更容易的理解MVC的模式的好处。
|