MVC思想概述

一. 传统Model1和Model2

Model1:整个web应用几乎全部用JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接作出响应。用少量的javaBean来处理数据库链接,数据库访问等操作

实现比较简单,适用于快速开发小规模项目。JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用扩展和维护的难度。

Model2: 基于MVC架构的设计模式,Servlet作为前端控制器,负责接收客户端发出的请求。在Servlet中只包含控制逻辑和简单的前端逻辑。然后,调用后端javaBean来完成实际的逻辑处理;最后,将其转发到相应的JSP页面来处理显示逻辑。

JSP不再承担控制器责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户。JSP页面的请求与Servlet交互,而Servlet负责与后台的javaBean通信。

M(Model)————javaBean

V(View)————JSP

C(Controller)————Servlet

具有组件化的特点,更适用于大规模应用的开发,但也增加了应用开发的复杂程度。原本需要一个简单的JSP页面就能实现的应用,在Model2中被分解成多个协同工作的部分。

从某种程度上讲,Model2为了降低系统后期维护的复杂度,而导致前端开发的高复杂度。

二. MVC思想及其优势

MVC是所有面向对象程序设计语言都应该遵守的规范

三个基本部分:Model(模型),View(视图),Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性和可维护性。

特点:

               多个视图可以对应一个模型,可以减少代码的复制及代码的维护量 。一旦模型发生变化,也易于维护

               模型返回的数据和显示逻辑分离,模型数据可以应用任何的显示技术(JSP页面,Velocity模板,Excel文档等)

                应用被分为三层,降低了各层之间的耦合,提供了应用的可扩展性

               控制层的概念也很有效,把不同的模型和视图组合在一起,完成不同的请求,包含用户请求权限的概念

               MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,通过工程化和工具化的方法产生管理程序代码

早期的MVC思想:对于一个普通应用程序,将视图注册给模型,当模型数据发生改变时,即时通知视图页面发送改变

Web模式下的MVC思想:即使将多个JSP页面注册给一个模型,但当模型发生变化时,模型也无法主动给JSP页面发送消息(因为Web应用都是基于请求/响应模式的),只有当用户请求浏览该页面时,控制器才负责调用模型数据来更新JSP页面。

注解:

1.JavaBean:Java语言欠缺属性、事件、多重继承功能。所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码。Java

Bean正是编写这套胶水代码的惯用模式或约定。这些约定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述约定的类可以用于若干工具或库。

2.耦合和内聚介绍:耦合性是编程中的一个判断代码模块构成质量的属性,不影响已有功能,但影响未来拓展,与之对应的是内聚性。

耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。

内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

因此,现代程序讲究高内聚低耦合,即将功能内聚在同一模块,模块与模块间尽可能独立,互相依赖低。没有绝对没有耦合的模块组,只有尽量降低互相之间的影响。使模块越独立越好。

上一篇:Json的反序列化 .net Newtonsoft.Json


下一篇:ffmpeg中的sws_scale算法性能对比