现在的企业会采用到J2EE技术的结构来设计与解决方案。对于我们学习J2EE体系结构的朋友来说,了解其中的设计方法以及一些常用的设计模式是必不可少的。mvc结构是J2EE应用中常见的体系结构,下面我们来了解一下MVC模式的概念以及MVC的优点和缺点。
MVC模式(Model-View-Controller)
MVC模式是软件工程中的一种软件架构模式。是为了减少软件日益增长的复杂度而设计的,它不仅减少了软件的复杂性,而且还使软件的维护性以及可复用性得到了提高。简单的说就是MVC设计模式的应用更加偏重于GUI,也就是所谓的图形图像用户界面。例如qq这种桌面应用程序就要使用到大量的窗口以及菜单来于用户进行交互。反观服务器这种应用,一般情况下是不会运用到GUI的。
MVC模式是一个复杂的架构模式,它的实现也很复杂。但是现在已经总结出了很多的可靠地设计模式,这些设计模式结合在一起,就会使MVC模式的实现变得相对于的简单。
MVC把软件系统分成了三个基本部分:模型、视图、控制器。这也是MVC名字的由来。MVC模式在1978年有Trygve Reenskaug提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。它的目的就是实现一种动态的程序设计,能使后续对程序的修改进行简化,并且使程序某一部分的重复利用成为可能。
视图(view):界面设计人员进行图形图像界面设计。
在视图中并没有真正的处理会发生,不论这些数据是联机存储的还是一个雇员列表。作为视图来说,它的作用就只是作为一种输出数据并允许用户操纵的方式。
控制器(controller):负责转发请求,对请求进行处理。
接受用户的输入并且调用其它两者去完成用户的请求。所以当你点击Web页面中的超链接的时候,控制器自身不会做任何处理包括不输出任何东西。它的作用就是接受请求并且决定使用哪个模型构件去处理请求,然后在决定用哪个视图来显示返回的数据。
模型(model):程序员编写程序应有的功能、数据库专家进行数据管理和数据库设计。
模型在MVC的三个部分中拥有最多的处理任务。模型与数据格式无关,这样子一个模型就可以为多个视图提供数据,也就是说被模型返回的数据是中立的。模型减少了代码的重复性,以为在模型中的代码只需要写一次就可以被多个视图所使用。
视图与模型与控制器
多个视图能共享一个模型。如今,同一个Web应用程序会提供多种用户界面,例如Web网站同时能提供Internet界面和WAP界面,前者用于用户在使用浏览器收发电子邮件的时候,后者用于用户通过手机来访问电子邮箱的时候。在MVC设计模式中,视图负责格式化数据并在用户请求并返回响应数据的时候将之呈现给用户。因为业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。
控制器是自包含(self-contained)指高独立内聚的对象,与模型和视图保持相对独立,所以应用程序的数据层和业务规则可以方便的改变。例如,把数据库从MySQL移植到Oracle,只需改变控制器即可。只要正确地实现了控制器,视图都会正确地显示它们不管数据来自数据库还是LDAP服务器。由于MVC模式的视图、模型、控制器相互独立,改变其中一个并不会影响其他两个,所以依据这种设计思想能构造良好的少互扰性的构件。
控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,而且控制器也是构造应用程序的强有力手段。控制器可以根据用户的需求,在给定的一些可重用的模型和视图中选择适当的模型进行处理,然后选择适当的的视图将处理结果显示给用户。
在最开始的JSP网页中,数据库查询语句这种数据层和HTML这种表示层代码会经常混在一起。对于经验丰富的开发者来说将数据从表示层分离出来也是不容易做到的。而MVC可以强制性的将它们分开。虽然说构造MVC应用程序也需要一些额外的工作,但是单单在这一方面来说它带给我们的好处也是不容置疑的。
MVC优点
1)耦合性低
MVC的视图层和业务层是分开的,这样子就可以在不用重新编译模型和控制器代码的情况下去修改视图层代码。同样,只需要改动MVC的模型层就可以让一个应用的业务流程或者业务规则改变。因为模型与控制器和视图都是分离的,所以很容易改变应用程序的数据和业务规则。
2)较低的生命周期成本
MVC是开发和维护用户接口的技术含量降低。
3)高重用性和可适用性
#p#分页标题#e#
在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。其次,由于模型返回的数据不带任何显示格式,所以同样的构件能被不同的界面使用。例如:很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
4)快速的部署
MVC使程序员几种精力在业务逻辑上,而界面程序员就集中精力在表现形式上。这样子就使开发时间得带相当大的缩减。
5)可维护性
因为视图层和业务层都是分离的,多以使得WEB应用更加易于维护和修改。
6)有利于软件工程化管理
MVC缺点
1)对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
2)视图与控制器之间的连接太过紧密。
3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
MVC的扩展
MVC具有良好的扩展性,他可以轻松的实现:
1)实现一个模型的多个视图
2)采用多个控制器
3)在模型改变的时候所有的视图都会自动刷新
4)所有的控制器都是相互独立工作
这就是MVC的好处,只需要在以前的程序上进行修改或者增加,就可以轻松的增加许多个程序功能。
本文讲了对MVC模型的概念,以及MVC模型的优缺点。总的来说,MVC是构件软件非常好的模式,强迫的把应用分为三个层次:模型、视图以及控制层。应用非常的灵活,所以学习的朋友有必要认真的对MVC的深层知识进行了解。