收藏 分享(赏)

面向对象.doc

上传人:dreamzhangning 文档编号:2957890 上传时间:2018-09-30 格式:DOC 页数:7 大小:92KB
下载 相关 举报
面向对象.doc_第1页
第1页 / 共7页
面向对象.doc_第2页
第2页 / 共7页
面向对象.doc_第3页
第3页 / 共7页
面向对象.doc_第4页
第4页 / 共7页
面向对象.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、简介编辑MVC 开始是存在于桌面程序中的,M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是将 M 和 V 的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C 存在的目的则是确保 M 和 V 的同步,一旦 M 改变,V 应该同步更新。 1-2 模型视图控制器(MVC)是 Xerox PARC 在二十世纪八十年代为编程语言Smalltalk80 发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle 旗下 Sun 公司 Java EE 平台的设计模式,并且受到越来越多的使用ColdFusion 和 PHP 的开

2、发者的欢迎。模型视图控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。 3 (概述内容来源: 4 )2MVC 编程模式编辑MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: 1 Model(模型)表示应用程序核心(比如数据库记录列表)。 View(视图)显示数据(数据库记录)。 Controller(控制器)处理输入(写入数据库记录)。MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数

3、据。View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。3 框架内容编辑MVC 是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC 应用程序被分成三个核心部件:模型、视图、控制器。它

4、们各自处理自己的任务。最典型的 MVC 就是 JSP + servlet + javabean 的模式。 5 视图视图是用户看到并与之交互的界面。对老式的 Web 应用程序来说,视图就是由HTML 元素组成的界面,在新式的 Web 应用程序中,HTML 依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括 Adobe Flash 和像XHTML,XML/XSL,WML 等一些标识语言和 Web services.MVC 好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵

5、的方式。 6 模型模型表示企业数据和业务规则。在 MVC 的三个部件中,模型拥有最多的处理任务。例如它可能用像 EJBs 和 ColdFusion Components 这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 6 控制器控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击 Web页面中的超链接和发送 HTML 表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回

6、的数据。 6 4 区别编辑框架和设计模式的区别有很多程序员往往把框架模式和设计模式混淆,认为 MVC 是一种设计模式。实际上它们完全是不同的概念。 7 框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架 构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重 用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。框架与设计模式虽然相似,但却有着根本的不同。设计

7、模式是对在某种环境中反复出现的问题以及解决该问题的方案的描 述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一 个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。框架模式有哪些?MVC、MTV、MVP、CBD、ORM 等等;框架有哪些?C+语言的 QT、MFC、gtk,Java 语言的 SSH 、SSI,php 语言的 smarty(MVC 模式),python 语言的 django(MTV 模式)等等设计模式有哪些?工厂模式、适

8、配器模式、策略模式等等简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。5 常见框架编辑StrutsStruts 是 Apache 软件基金下 Jakarta 项 目的一部分。Struts 框架的主要架构设计和开发者是 Craig R.McClanahan。Struts 是 Java Web MVC 框架中不争的王者。经过长达九年的发展,Struts 已经逐渐成长为一个稳定、成熟的框架,并且占有了 MVC 框架中最大的市场份额。但是 Struts 某些技术特性上已经落后于新兴的 MVC 框架。面对 Spring MVC、We

9、bwork2 这些设计更精密,扩展性更强的框架,Struts 受到了前所未有的挑战。但站在产品开发的角度而言,Struts 仍然是最稳妥的选择。Struts 有一组相互协作的类(组件)、Servlet 以 及 jsp tag lib 组成。基于struts 构架的 web 应用程序基本上符合 JSP Model2 的设计标准,可以说是 MVC设计模式的一种变化类型。根据上面对 framework 的描述,很容易理解为什么说 Struts 是一个 web framework,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts 有其自己的

10、控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts 可以很容易的与数据访问技术相结合,包括 EJB,JDBC 和 Object Relation Bridge。在视图层,Struts 能够与 JSP, Velocity Templates,XSL 等等这些表示层组件相结合。 8 SpringSpring 实际上是 Expert One-on-One J2EE Design and Development 一书中所阐述的设计思想的具体实现。在 One-on-One 一书中, Rod Johnson 倡导 J2EE实用主义

11、的设计思想, 并随书提供了一个初步的开发框架实现(interface21 开发包)。而 Spring 正是这一思想的更全面和具体的体现。Rod Johnson 在interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。Spring 是一个开源框架,由 Rod Johnson 创建并且在他的著作J2EE 设计开发编程指南里进行了描述。它是为了解决企业应用开发的复杂性而创建的。Spring 使使用基本的 JavaBeans 来完成以前只可能由 EJB 完成的事情变得可能了。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可

12、测试性和松耦合的角度 而言,任何 Java 应用都可以从 Spring 中受益。简单来说,Spring 是一个轻量的控制反转和面向切面的容框架。当然,这个描述有点过于简单。但它的确概括出了 Spring 是做什么的。8 ZFZend Framework(简写 ZF)是由 Zend 公司支持开发的完全基于 PHP5 的开源PHP 开发框架,可用于开发 Web 程序和服务,ZF 采用 MVC(ModelView-Controller) 架构模式来分离应用程序中不同的部分方便程序的开发和维护。(MVC 框架的详细使用及其相关具体操作可以阅读参考资料: 8 或者扩展阅读第二,三,四条。).NET.NE

13、T MVC9 是微软官方提供的以 MVC 模式为基础的.NET Web 应用程序(Web Application)框架,它由 Castle 的 MonoRail 而来(Castle 的 MonoRail 是由java 而来),目前最新版本是.N 4.5。 10 6 特点编辑优点耦合性低视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动 MVC 的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。模型是自包含的,并且与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。如果把

14、数据库从 MySQL 移植到 Oracle,或者改变基于 RDBMS数据源到 LDAP,只需改变模型即可。一旦正确的实现了模型,不管数据来自数据库或是 LDAP 服务器,视图将会正确的显示它们。由于运用 MVC 的应用程序的三个部件是相互独立,改变其中一个不会影响其它两个,所以依据这种设计思想能构造良好的松耦合的构件。 11 重用性高随着技术的不断进步,需要用越来越多的方式来访问应用程序。 MVC 模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何 WEB(HTTP)浏览器或 者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品

15、,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据 没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用 HTML 来表示,但是也有可能用 WAP 来表示,而这些表示所需要的命令是改变视 图层的实现方式,而控制层和模型层无需做任何改变。由于已经将数据和业务规则从表示层分开,所以可以最大化的重用代码了。模型也有状态管理和数据持久性处 理的功能,例如,基于会话的购物车和电子商务过程也能被 Flash 网站或者无线联网的应用程序所重用。 11 生命周期成本低MVC 使开发和维护用户接口的技术含量降低。部署快使用 MVC 模式使开发时间得到相当大的缩减,它使程序

16、员(Java 开发人员)集中精力于业务逻辑,界面程序员(HTML 和 JSP 开发人员)集中精力于表现形式上。可维护性高分离视图层和业务逻辑层也使得 WEB 应用更易于维护和修改。有利软件工程化管理由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。控制器也提供 了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图, 控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。 12-13 缺点没有明确的定义完全理解 MVC 并不是很容易。使用

17、MVC 需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。不适合小型,中等规模的应用程序花费大量时间将 MVC 应用到规模并不是很大的应用程序通常会得不偿失。增加系统结构和实现的复杂性对于简单的界面,严格遵循 MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。视图与控制器间的过于紧密的连接视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。视图对模型数

18、据的低效率访问依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。一般高级的界面工具或构造器不支持模式改造这些工具以适应 MVC 需要和建立分离的部件的代价是很高的,会造成 MVC使用的困难。 12-13 7 外界评价编辑根据天极网资料显示:基于 Web 的 MVC framework 在 J2EE 的世界内已是空前繁荣,TTS 网 站上几乎每隔一两个星期就会有新的 MVC 框架发布,比较好的 MVC,老牌的有 Struts、Webwork。新兴的 MVC 框架有 Spring MVC、Tapestry、JSF等。这些大多是著名

19、团队的作品,另外还有一些边缘团队的作品,也相当出色,如 Dinamica、VRaptor 等,这些框架都提供了较好的层次分隔能力,在实现良好的 MVC 分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高。 8 如何选择一个好的框架应用在项目中,将会对项目的效率和可重用是至关重要的。 8 8Mvc 控件编辑在 ASP .NET MVC 框架中没有了自己的控件,页面显示完全就回到了写 html 代 码的年代。还好在 asp .net mvc 框架中也有自带的 HtmlHelper 和 UrlHelper两个帮助类。另外在 MvcContrib 扩展项目中也有扩展一些帮助类,这样我

20、们就不光 只能使用完整的 html 来编写了需要显示的页面了,就可以使用这些帮助类来完成,但最后运行时都还是要生成 html 代码的。HtmlHelper 类HtmlHelper 类位于 System.Web.MVC.Html 命名空间下。主要包括FormExtensions,InputExtensions,LinkExtensions,SelectExtensions,TextAreaExtensions,ValidationExtensions,RenderPartialExtensions 等 7 个静态类,他们全部是是采用拓展方法来实现的。InputExtensions 类:主要有 5

21、 种类型的扩展方法,分别用于 CheckBox 控件、Hidden 控件、Pass 控件、RadionButton 控件和 TextBox 控件LinkExtensions 类:该类主要用于生成相关链接,主要扩展了 ActionLink 和RouteLink 方法。ActionLink:扩展方法主要实现一个连接,共有十个重载方法。UrlHelper 帮助类看类名也都知道这个类是用来成 URL 在 ASP .NET MVC 应用程序中。UrlHelper 提供了四个非常常用的四个方法。1.Action 方法通过提供 Controller,Action 和各种参数生成一个 URL,2.Conten

22、t 方法是将一个虚拟的,相对的路径转换到应用程序的绝对路径,3.Encode 方法是对 URL 地址进行加密,与 Server.Encode 方法一样。4.RouteUrl 方法是提供在当前应用程序中规定的路由规则中匹配出 URL。另外还有两个属性,分别是 RequestContext 和 RouteCollection 两个属性,分别指的是包含 HTTP 上下文和 RouteData 两个属性,另外,RouteCollection 是整个当前应用程序中规定的路由规则。自定义控件微软提供的 HtmlHelper 已经是足够大部分开发人员使用了,但是有一些功能要用微软提供的 HtmlHelper

23、 可能还不满足要求。接下来就谈谈如何自定义的过程。首先自定义的方法就是对 HtmlHelper 对象的扩展。扩展方法实现的三要素:1、静态类 2、静态方法 3、this 关键字1、先定义一个类,例如:MyHtmlHelper:using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MvcApplicationFirstDome.Models /静态类public static class MyHtmlHelper/静态方法2、假设要扩展的方式是 GetSpan,作用就是

24、当你传入参数时,内部封装了之后返回结果,代码如下。注意在 MyHtmlHelper 类中要引用 using System.Web.Mvc 命名空间。/静态方法public static string GetSpan(this HtmlHelper htmlHelper,string text)return “+text+“;经过上面两步之后 HtmlHelper 的扩展方法 GetSpan 基本可以使用了,接下来就讲解如何在页面调用了。在调用的时候要注意下一命名空间:如果扩展方法的命名空间和页面的命名空间不同的就必须引用扩展方法的命名空间,否则在页面是没有办法调用自定义的方法的。引用完命名空间之后,就可以在相应的页面调用自定义的扩展方法了。对于某些项目来说,自定义控件过于复杂和浪费时间。这个时候也可以从技术社区或是源代码站下载适合自己需求的 Mvc 控件。如一些控件套包,表格控件等。 14

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报