预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MVC在Web系统中的模式与应用面向对象的设计模式是经验的总结,MVC思想是原先用于构建用户界面的。这篇文章主要论述了如何在新的Web应用领域中使用设计模式和MVC架构。文章首先介绍了设计模式的概念和特点,以及MVC架构的设计思想,并分析了MVC架构中包含的几种主要的模式。然后根据Web应用系统的特点,就如何应用模式和MVC架构提出了一些设计思路。1.引言1.1设计模式面向对象技术的出现和应用大大提高了软件的重用性和软件的质量。面向对象的编程也比以往的各种编程模式要简单和高效,但是面向对象的设计方法要比以往的设计方法要复杂和有技巧得多,一个良好的设计应该既具有对问题的针对性,也充分考虑到对将来问题和需求有足够的通用性。在过去的十几年中,人们在对面向对象技术的研究探索和实际应用中针对某些问题创造了一些良好的解决方案,即所谓的面向对象的设计模式。面向对象技术的目的之一就是提高软件的重用性,而对设计模式、设计方案的重用则从更深的层次上体现了重用的意义和本质。人们对设计模式有很多定义,其中被引用的最多是ChristopherAlexander的设计模式的定义:每一个设计模式是一个三方的规则,它表达了一个上下文环境(Context),一个问题和一个解决方案。设计模式一般有如下几个基本要素:模式名称,问题,目的,解决方案,效果,样例代码和相关设计模式。设计模式的分类有好几种,可以根据其目的分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种。创建型模式主要是用来创建对象,结构型模式主要是处理类或对象的组合,行为型模式则主要用来描述对类或对象怎样交互和怎样分配职责。也可以根据范围将设计模式分为类模式和对象模式,类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。对象模式是处理对象间的关系,这些关系在运行时刻变化,更具动态性。模式的特点:是通过经验获取的,以某种结构化的格式书写下来,避免了遇到相同的问题重头设计,存在于不同的抽象层,在不断完善的,是可重用的人工产物,使设计和最好的练习交互,以被组合起来解决更大的问题。1.2MVC架构MVC最初是在Smalltalk-80中被用来构建用户界面的。M代表模型Model,V代表视图View,C代表控制器Controller。MVC的目的是增加代码的重用率,减少数据表达,数据描述和应用操作的耦合度。同时也使得软件可维护性,可修复性,可扩展性,灵活性以及封装性大大提高。单用户的应用通常是以事件驱动的用户界面为组织结构的。开发人员用一个界面工具画了一个用户接口界面,然后编写代码根据用户输入去执行相应的动作,许多交互式的开发环境鼓励这么做,因为它强调先有界面然后再有功能。一些软件设计模式策略是这样的,然后经常将固定后的代码融入最后的系统当中。导致的结果就是,程序组织围绕用户界面元素和用户在那些界面元素上的动作,数据的存储,应用的功能以及用来显示的代码都杂乱无章的缠绕在一起。在单用户的系统里代码结构是可以这样的,因为系统需求不会频繁变化。但是对一个大的系统如大型Web系统,或电子商务系统来说就不太适用了。通过把数据模式从各种可以被存取和控制的数据中分离出来可以改善分布式系统的设计。MVC设计模式由三部分组成。模型是应用对象,没有用户界面。视图表示它在屏幕上的显示,代表流向用户的数据。控制器定义用户界面对用户输入的响应方式,负责把用户的动作转成针对Model的操作。Model通过更新View的数据来反映数据的变化。三者关系如图:对MVC关系图的理解图2MVC的分工与协作2.MVC中的设计模式一个以MVC为架构的系统包含了很多的设计模式,但是与MVC最为密切相关的是下面三种模式:Observer,Composite和Strategy。2.1Observer模式MVC通过使用定购/通知的方式分离了Model和View。View要保证自己显示能正确地反映出Model的内容和状态。一旦Model的内容发生变化,必须有一个机制来使得Model能够通知相关的View,使得相关的View可以在适当的时机刷新数据。这个设计还可以解决更一般的问题,将对象分离,使得一个对象的改变能够影响到另一些对象,而这个对象并不知道那些被影响的对象的细节。这就是被描述为Observer的设计模式。模式类型:Observer模式是对象型模式,同时它也是行为型模式。模式目的:定义对象间的一对多的依赖关系,当一个对象的值或状态发生改变时,所有与它有依赖关系的对象都得到通知并自动更新。某一数据可能有多种显示方式,并且可能同时以不同的方式显示(如图2)。当通过某一种方式改变