MVC 浅谈

转载 2012年03月31日 10:21:02

只要接触MVC就势必离不开说三层,很多人就会一直纠结于他们之间的区别,也难怪,他们之间有共同之处:都分为三块,不仔细琢磨好像说的都是一样的东西,网上说法也是百家争鸣。本文仅是介绍一下对MVC的理解,由于学习是一个逐步深入的过程,现在还未到深刻理解的程度,也没必要非得区分出一个所以然来,也不敢对三层和MVC妄下评论,仅是记录这个学习认知的过程,希望和大家一同交流,随着时间的推移,自己的认识也在不断的刷新。

========切入正题========


MVC模式(Model-View-Controller)由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。
MVC的设计思想是即一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。

各个层的功能:

模型(Model):主要负责出来业务逻辑以及数据库的交互。用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。
视图(View):主要用于显示数据和提交数据。视图层能够实现数据有目的的显示。在视图中一般没有程序上的逻辑。
控制器(Controller):主要是用作捕获请求并控制请求转发。起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。

三者之间的关系:


Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。

MVC的两个分离:
Ⅰ:View和Model分离:Model关注内在的不可视的逻辑,而View关注外在的可视的逻辑。这样能够为相同的Moudle开发不同的View进行展示,把可视与不可视分离开也可以使Modle相对独立,耦合性降低,可以进行独立测试。
Ⅱ:View和Controller分离:这个分离的重要性不是很大,因为View和Controller往往是一一对应的关系。Controller对View是单向引用,这样可以对Controller进行独立测试。

MVC的发展:
我们平时最常说的是最早提出的MVC模式,也称为Classic MVC,具体演化参考(MVC演化历史),不再赘述。

MVC的优点:

最重要的是有多个视图对应一个模型的能力,使的软件的健壮性和代码的重用性得到了很大的提高;一个应用被分离为三个层,有新的需求只需改变特定的层就可以满足,也便于维护,有利于软件工程化管理。

缺点:
(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,使软件的开发周期加长,并可能产生过多的更新操作,降低运行效率。
(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
(4) 目前,一般高级的界面工具或构造器不支持MVC架构。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。

SpringMVC 入门浅谈

SpringMVC 可以算的上是目前使用较为广泛的Java Web开发框架了!Spring MVC 是Spring框架最重要的的模块之一。它以强大的Spring IoC容器为基础,并充分利用容器的特性...
  • zxw136511485
  • zxw136511485
  • 2016年09月21日 15:46
  • 2035

浅谈MVC在Unity中的使用

首先我们先谈Unity3D本身的MonoBehavior脚本。 MonoBehavior我们可以将他理解为界面层与界面直接沟通的上层脚本,在他底部的控制,逻辑,数据等有必要用MonoBehavior...
  • Truck_Truck
  • Truck_Truck
  • 2017年07月19日 23:22
  • 439

浅谈MVC,MVP,MVVM区别与联系

本文只对MVC,MVP,MVVM进行粗浅的学习讨论
  • donkor_
  • donkor_
  • 2017年02月10日 17:47
  • 626

SpringMVC浅谈

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。...
  • Gane_Cheng
  • Gane_Cheng
  • 2016年10月11日 21:28
  • 5185

浅谈MVC架构—你到底有什么本事

MVC的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理。然后模型根据用户请求进行相应的业务逻辑处理,并返回数据。最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户...
  • u010168160
  • u010168160
  • 2015年01月27日 07:58
  • 58842

浅谈unity3d中使用MVC框架模式

浅谈unity3d中使用MVC框架模式 MVC框架模式,相信很多人都不会陌生,数据-控制-显示分离的工作方式或者叫做代码结构会使软件(游戏)的结构清晰化,逻辑更明了。但由于MVC框架模式各部...
  • fanglrui
  • fanglrui
  • 2015年05月06日 20:33
  • 1930

浅谈mvc

什么才是MVC? 这是一个非新手都就会嗤之以鼻的问题,试问哪个程序猿不知道什么是MVC,但在此我希望大家先忘记之前对MVC的所有知识,很多时候学习的第一步就是承认自己的无知,这是一个多么重要的步骤,...
  • u013424496
  • u013424496
  • 2016年04月21日 09:20
  • 458

浅谈MVC

晓风well  http://blog.csdn.net/tao_sun 题外话,这段时间由于课程密集,课外作业也比较多,关于JAVA这块的学习也比较滞后,想想是越学才知道自己越需要补充什么...
  • tao_sun
  • tao_sun
  • 2013年10月21日 09:13
  • 910

MVC浅谈

mvc是model,view,controller的缩写,mvc包含三个部分:  l模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。 2视图(view)对象:是...
  • Demon_huirong
  • Demon_huirong
  • 2016年06月09日 16:06
  • 117

MVC 浅谈

只要接触MVC就势必离不开说三层,很多人就会一直纠结于他们之间的区别,也难怪,他们之间有共同之处:都分为三块,不仔细琢磨好像说的都是一样的东西,网上说法也是百家争鸣。本文仅是介绍一下对MVC的理解,由...
  • Jesse621
  • Jesse621
  • 2012年02月11日 10:31
  • 7635
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MVC 浅谈
举报原因:
原因补充:

(最多只允许输入30个字)