0%

2.1.2 MVC思想及其优势

2.1.2 MVC思想及其优势

MVC并不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。
MvC思想将一个应用分成三个基本部分:

  1. Model(模型)、
  2. View(视图)
  3. Controller(控制器)

这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。
在经典的MvC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图。具体地说,每个模型对应一系列的视图列表,这种对应关系通常采用注册来完成,即把多个视图注册到同一个模型,当模型发生改变时,模型向所有注册过的视图发送通知,接下来,视图从对应的模型中获得信息,然后完成视图显示的更新。
从设计模式的角度来看,MVC思想非常类似于观察者模式,但其与观察者模式存在少许差别:
在观察者模式下,观察者和被观察者可以是两个互相对等的对象;但在MVC中,被观察者往往只是单纯的数据体,而观察者则是单纯的视图页面

概括起来,MVC有如下特点:
多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,这样,一旦模型发生改变,也易于维护。
模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如,使用JSP页面、 Velocity模板或者直接产生Excel文档等。

应用被分隔为三层,这降低了各层之间的耦合,提供了应用的可扩展性
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说包含了用户请求权限的概念。
MVC更符合软件工程化管理的精神。不同的层各司其职,同一层的组件具有相同的特征,这有利于通过工程化和工具化的方法产生管理程序代码。
相对于早期的MVC思想,Web模式下的MVC思想则又存在一些变化。对于一个普通应用程序,可以将视图注册给模型,当模型数据发生改变时,即时通知视图页面发生了改变;而对于Web应用,即使将多个JSP页面注册给一个模型,但当模型发生变化时,模型也无法主动给JSP页面发送消息,这是因为web应用都是基于请求/响应模式的,只有当用户请求浏览该页面时,控制器才负责调用模型数据来更新JSP页面。图2.2显示了遵循MVC模式的Java Web的运行流程:
这里有一张图片
MVC思想与观察者模式有一定的相似之处,但并不完全相同。经典的MVC思想与Web应用的MVC思想也存在一定的差别,引起差别的主要原因是因为Web应用是一种请求/响应模式下的应用,对于请求/响应应用,如果用户不对应用发出请求,视图将无法主动更新自己。

原文链接: 2.1.2 MVC思想及其优势