MVC详解

模型-视图-控制器(Modal View Controler,MVC)是Xerox
PARC当八十年代为编程语言Smalltalk-80发明的同样种植软件设计模式,至今已让大利用。最近几乎年为推荐吧Sun公司J2EE平台的设计模式,并且吃更为多之运
ColdFusion 和 PHP
的开发者的迎接。模型-视图-控制器模式是一个有效的家伙箱,它有不少利,但为来一些缺陷。

MVC  本来是存于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是以M和V的实现代码分离,从而使与一个先后可以下不同之表现形式。比如同批判统计数据你可以分别用柱状图、饼图来代表。C存在的目的则是保证M和V的联合,一旦M改变,V应该一并更新。

相同、MVC如何工作

MVC是一个设计模式,它强制性的而应用程序的输入、处理及输出分开。使用MVC应用程序被分为三单核心部件:模型、视图、控制器。它们各自处理好的任务。

1、视图
视图是用户观看并跟之相的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在最新的Web应用程序中,HTML依旧在视图中饰演着要的角色,但有初的技术既层出不穷,它们包括Macromedia
Flash和象XHTML,XML/XSL,WML等一些标识语言和Web
services.
在web前端中视图是会同关键的环节。

什么样处理应用程序的界面变得进一步有挑战性。MVC一个十分的功利是它们亦可也汝的应用程序处理过剩两样的视图。在视图中其实并未当真的处理发生,不管这些数据是一同存储的要么一个雇员列表,作为视图来讲,它只是是当做一如既往栽输出数据并允许用户操纵的方。

2、模型
模型表示企业数目及业务规则。在MVC的老三单部件中,模型有极多之拍卖任务。例如它恐怕就此象EJBs和ColdFusion
Components这样的部件对象来处理数据库。被模型返回的数目是中立之,就是说模型与数量格式无关,这样一个模子能啊多独视图提供数据。由于使用叫模型的代码只需要写一涂鸦就得吃多只视图重用,所以减少了代码的重复性。

3、控制器
控制器接受用户的输入并调用模型与视图去做到用户的需要。所以当单击Web页面中之超链接和殡葬HTML表单时,控制器本身不出口任何东西同开另外处理。它只是是接到请求并决定调用哪个模型构件去处理要,然后用规定为此哪个视图来展示模型处理回来的数额。

现我们总结MVC的处理过程,首先控制器接收用户之乞求,并控制应该调用哪个模型来展开处理,然后模型用工作逻辑来处理用户之求并返数据,最后决定器用相应的视图格式化模型返回的数量,并由此代表层呈现给用户。

第二、为什么而以 MVC

大部分Web应用程序都是故像ASP,PHP,或者CFML这样的过程化语言来创造的。它们以如数据库查询语句这样的数据层代码和诸如HTML这样的代表层代码乱在联名。经验比较丰富的开发者会将数据由代表层分离开来,但这便不是死容易形成的,它需精心的计划同连的品味。MVC从根本上强制性的以它分别。尽管构造MVC应用程序需要有附加的工作,但是其为咱带来的功利是无须质疑之。

率先,最要紧的一些是大抵个视图能共享一个模型,正如我所提及的,现在用因此更多的方来拜访你的应用程序。对是,其中一个解决之道是运MVC,无论你的用户想只要Flash界面或是
WAP
界面;用一个模型就能够处理它们。由于您既拿数据及事情规则从代表层分开,所以您得最大化的任用你的代码了。

鉴于模型返回的多寡尚未展开格式化,所以一律的部件能叫不同界面使用。例如,很多数目或者为此HTML来代表,但是它们为闹或要用Macromedia
Flash和WAP来代表。模型呢来状态管理与数目持久性处理的作用,例如,基于会话的购物车和电子商务过程为会为Flash网站或者无线联网之应用程序所引用。

为模型是自包含的,并且和控制器和视图相分离,所以非常爱改你的应用程序的数据层和事务规则。如果你想将您的数据库从MySQL移植到Oracle,或者转而的基于RDBMS多少源到LDAP,只需要变更您的模子即可。一旦而不利的贯彻了范,不管您的数量来数据库或是LDAP服务器,视图将会见对的示她。由于下MVC的应用程序的老三个部件是相互对立,改变中一个休见面影响外少个,所以冲这种计划思想你能够组织良好的松偶合的预制构件。

针对自己的话,控制器的为提供了一个利,就是得使用控制器来接不同之模子和视图去好用户之求,这样控制器可以呢组织应用程序提供强大的招。给得有只是选用的范与视图,控制器可以因用户的要求选择模型进行处理,然后选取视图将处理结果显示为用户。

三、MVC的缺点
MVC的毛病是出于其从未明显的概念,所以完全理解MVCOracle并无是怪易。使用MVC需要仔细的计划,由于它们的里原理比较复杂,所以需要花有日错开思。

您用不得不费相当可观的流年去考虑如何将MVC运用到您的应用程序,同时由模型与视图要严的离别,这样呢受调试应用程序到来了肯定的紧。每个构件在动之前还需经过到底底测试。一旦你的部件经过了测试,你就是可毫无顾忌的录用它们了。

根据我个人经验,由于我们以一个应用程序分成了三只部件,所以下MVC同时为代表你将要管理于原先又多的文件,这或多或少凡不言而喻的。这样看似我们的工作量增加了,但是要记住这比较打它们所能够带来被我们的补益是无所谓。

MVC并无入小型甚至中等规模之应用程序,花费大量时空以MVC应用到规模并无是挺特别的应用程序通常会得不偿失。

季、MVC是相同条创建软件之好途径
MVC设计模式是一个老大好创造软件的路,它所倡导的有些准,像内容与显示互相分离可能于好明。但是一旦您而切断模型、视图和控制器的部件,你或许得重思考你的应用程序,尤其是应用程序的构架方面。如果你愿意接受MVC,并且有力量应付它所带动的附加的做事和复杂性,MVC将会如您的软件以健壮性,代码用和组织方面上一个初的阶梯。

相关文章