MVC在Web系统中的模式及其应用
MVC在Web系统中的模式与应用
面向对象的设计模式是经验的总结,MVC思想是原先用于构建用户界面的。这篇文章要素论述了如何在新的Web应用 领域中使用设计模式与MVC架构。文章首先介绍了设计模式的概念与特点,与MVC架构的设计思想,并分析/MVC 架构中包含的几种要案的模式。然后根据Web应用系统的特点,就如何应用模式与MVC架构提出了 •些设计思路。
1.引言
1.1设计模式
面向对象技术的出现与应用大大提高了软件的重用性与软件的质量。面向对象的编程也比以往的各类编程模式要简单与 高效,但是面向对象的设计方法要比以往的设计方法要复杂与有技巧得多,一个良好的设计应该既具有对问题的针对性, 也充分考虑到对将来问题与需求有足够的通用性。在过去的十儿年中,人们在对面向对象技术的研究探索与实际应用中 针对某些问题制造了 •些良好的解决方案,即所谓的面向对象的设计模式。面向对象技术的目的之•就是
提高软件的重用 性,而对设计模式、设计方案的重用则从更深的层次上表达了重用的意义与本质。
人们对设计模式仃很多定义,其中被引用的最多是ChriSt。PherAIeXander的设计模式的定义:每 个设计模式是•个三 方的规则,它表达了 个上下文环境(Context) , •个问题与•个解决方案。设计模式通常有如下几个基本要素:模式 名称,问题,目的,解决方案,效果,样例代码与有关设计模式。
设计模式的分类石好儿种,能够根据其目的分为创建型(CreatiOnaI),结构型(StruCtUraI)与行为里(BehaViOraI);种。创 建型模式要素是用来创建对象,结构型模式要紧是处理类或者对象的组合,行为型模式则要紧用来描述对类或者对象如 何交互与如何分配职货。也能够根据范阳将设计模式分为类模式与对象模式,类模式处理类与子类之间的关系,这些关 系通过维承建立,在编译时刻就被确定下来,是属于静态的。对象模式是处理对象间的关系,这些关系在运行时刻变化, 更具动态性。
模式的特点:是通过经验获取的,以某种结构化的格式书写下来,避免了遇到相同的问题重头设计,存在于不一致的抽 象层,在不断完善的,是可重用的人工产物,使设计与最好的练
习交互,以被组合起来解决更大的问题。
1.2MVC架构
MVC最初是在SmaIItak80中被用来构建用户界面的.M代表模型ModeLV代表视图View, C代表操纵器ControIler。 MVC的Fl的是增加代码的全用率,减少数据表达,数据描述与应用操作的耦合度。同时也使得软件可保护性,可修复 性,可扩展性,灵活性与封装性大大提面。
单用户的应用通常是以事件驱动的用户界面为组织结构的。开发人员用一个界面工具画了一个用户接口界面,然后编写 代码根据用户输入去执行相应的动作,许多交互式的开发环境鼓励这么做,由于它强调先有界面然后再有功能。一些软 件设计模式策略是这样的,然后经常将固定后的代码融入鼓后的系统当中。导致的结果就是,程序组织围绕用户界面元 素与用户在那些界面元素上的动作,数据的存储,应用的功能与用来显示的代码都杂乱无章的缠绕在一起。在单用户的 系统里.代码结构是能够这样的,由于系统需求不可能频繁变化。但是对一个大的系统如大型Web系统,或者电子商务系
统来说就不太适用r。
通过把数据模式从各类能够被存取与操纵的数据中分离出来能够改善分布式系统的设计,MVC设计模式由:.部分构成.
模型是应用对象,没有用户界面。视图表示它在屏幕上的显示,代表流向用户的数据.操纵器定义用户界面对用户输入 的响应方式,负货把用户的动作转成针对Model的操作. Model通过更新VieW的数据来反映数据的变化.
-:者关系如图:
图L MVC关系图
时MVC关系图的懂得
模型M | 视图V | 控制器C | |
分工 | •抽象系统应用的功能 •封装系统的状态 •提供使用系统功能的方法和路径 •管理数据的存储和一致性 •当数据发生变化时通知相关部分 | •抽象数据表达 •表示针对用户的数据 •维护与Model数据的一 致性 | •抽象用户和系统的事 件的语意映射 •把用户输入翻译为系 统事件 •根据用户的输入和上 下文情况选择合适的 显示数据 |
协作 | •当地改变系统数据时通知View •能够被View检索数据 •提供对Controller的操作途径 | •把Model表征给用户 •当数据被相关Model改 变时更新表示的数据 •把用户输入提交给 Controller | mvc的三层架构 •把用尸输入转成对 Model的系统行为 •根据用户输入和 Model的动作结果选 择合适的View |
图2 MVC的分工与协作
2. MVC中的设计模式
一个以MVC为架构的系统包含j'很多的设计模式,但是与MVC最为密切有关的是下面:种模式:ObSerVer,Composite 与 Strategy.
一个以MVC为架构的系统包含j'很多的设计模式,但是与MVC最为密切有关的是下面:种模式:ObSerVer,Composite 与 Strategy.
2.1Observer 模式
MVC通过使用定购/通知的方式分离Γ Model lJ View.. VieW要保证自己显示能正确地反映出Model的内容与状态。
旦Model的内容发生变化,务必有一个机制来使得Model能够通知有关的View,使得有关的VieW能够在适当的时机刷 新数据.这个设计还能够解决更通常的问题,将对象分离,使得一个对象的改变能够影响到另一些对象,而这个对象并 不明白那些被影响的对象的细节。这就是被描述为ObSerVer的设计模式。
模式类型:ObSerVer模式是对象型模式,同时它也是行为型模式.
模式目的:定义对象间的一对多的依靠关系,当一个对象的值或者状态发生改变时,所有与它有依毒关系的对象都得到 通知并自动更新.某一数据可能有多种显示方式,同时可能同时以不一致的方式显示(如图2)。当通过某一种方式改 变/数据,那么其他的显示都应该能立即明白数据的改变与做相应的调整.
模式结构:
图3. Observer模式的结构图
效果:
1.抽象耦合.目标对象只明白它有一些观察者,每个观察者都符合抽象的ObSerVer类的简单接口,并不明白它们具体 属丁哪个类“这样使得目标与观察者之间的耦合最小且抽象.
2.支持广播通信。目标发送通知不用指定观察者,如何处理通知由观察者决定。
3.可能的意外更新“要处理好更新逻辑,避免错误更新.
4.2 Composite 模式
MVC的一个重要特征就是VieW能够嵌套。嵌套的组合视图可用于任何视图可用的地方,而且能够管理嵌套视图。这种 思想反映出将组合的视图与其组件平等对待的设计。这种设冲思想在面向对象领域内被描述成为ComPOSite的设计模式。 模式类型:ComPOSite模式是对象型模式,同时它也是结构型模式。
模式目的:将对象组合成树形结构以表示“部分•整体”层次结构。ComPOSite使组合对象的使
用与单个对象的使用具有一 致性。
模式结构:
图4. Composite模式的结构图
效果:
1.定义了包含简单对象与组合对象的类层次结构。简单对象能够被组合到更杂对歙中,而组合的对象能够再被组合。这 样客户端代码中用到简单对象的地方都能够使用组合对缥。
2.简化客户端代码。客户端不用明白某对象是简单对象还是组合对象,能够以一致的方式使用这些对象。
3.更容易增加新类型的组件。新的组件能够方便地加入已有组合对象中不用改变客户端代码。
4.3 Strategy 模式
MVC的另•重要特征是能够在不改变VieW的情况下改变VieW对用户输入的响应方式。这对•个经常需要变更响应逻
辑的系统来说是非常重要的,MVC把响应逻辑封装在Controller中。有一个ControIler的类层•次结构,能够方便地对原 有COntrOIler做适当改变,创建新的ContrOIler. VieW使用COntroII
er子类的实例来实现一个特定的响应策略.要实现 不一致的响应策略,只要用不一致种类的Controller实例替换即可。还能够在运行时刻通过改变VieVV的Controller来改 变VieW对用户输入的响应策略.这种VieWControIIer的关系是被描述为Strategy的设计模式的一个例子。
模式类型:Strategy模式是对象型模式,同时它也是行为型模式.
模式目的:定义一系列的算法,同时把它们封装起来,使它们能够互相替换,使得算法能够独立于使用它的客户端而变 化。
模式结构:
Context
Strategy版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论