MVC并不是Java语言所特有的设计思想, 也并不是Web应用所特有的思想, 它是所有面向对象 程序设计语言都应该遵守的规范。
MVC思想将 个应用分成三个基本部分:Model(模型〉、View (视图〉和Cont roller 〈控制器〉,这三个部分以最少的稿合协同工作, 从而提高应用的可扩展性及可维护性。
在经典的MVC模式中, 事件由控制捺处理, 控制器根据事件的类型改变模型或视图, 反之亦然。具体地说,每个模型对应一系列的视图列表, 这种对应关系通常采用注册来完成, 即: 把多个视图注册到同一个模型,
当模型发生改变时, 模型向所有注册过的视图发送通知, 接下来, 视图从对应的模 型中获得信息, 然后完成视图 显示的更新。
从设计模式的角度来看,MVC思想非常类似于观察者模式, 但与观察者模式存在少许差别: 观察者模式下 观察者和被观察者可以是两个互相对等的对象, 但对于MVC思想而言, 被观察者往往只是单纯的数据体, 而观察者则是单纯的视图页面。
概括起来, MVC有如下特点:
- 多个视图可以对应一个模型。按MVC设计模式, 一个模型对应多个视图, 可以减少代码的复制及代码的维护量,一旦模型发生改变, 也易于维护。
- 模型返回的数据与显示逻缉分离。模型数据可以应用任何的显示技术,例如,使用JSP页面 、Velocity模板或者直接产生Excel文档等。
- 应用被分隔为三层, 降低了各层之间的精合, 提供了应用的可扩展性。
- 控制层的概念也很有效, 由于它把不同的模型和不同的视图组合在一起, 完成不同的请求。因此, 控制层可以说是包含了用户请求权限的概念。
- MVC更符合软件工程化管理的精神。不同的层各司其职,每层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。
图1 遵循MVC模式的java web运行流程
MVC思想与观察者模式有一定的相似之处,但并不完全相同 . 经典的MVC思想与
Web 应用的 MVC思想也存在一定的差别, 引起差别的主委原因是因为 Web 应用是一种请求/响应模式下应用, 对于请求/响应应用, 如果用户不对应用发出请求, 视图无法主
动更新自己。