码迷,mamicode.com
首页 > Web开发 > 详细

MVC(模型---视图---控制器)

时间:2016-08-01 17:10:19      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

MVC(模型-视图-控制器)模式,它强制性的使用应用程序输入、处理和输出分开。

 M(model)是数据模型,v(view)即视图,是指用户界面,C(controller)则是控制器。

模型、视图、控制器的分离,使得一个模型可以有多种视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都反映出这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知给所有的视图,导致数据的更新。这就是一种模型的变化的传播机制。

三者的关系图如下:

技术分享

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

视图(view)代表用户交互界面,对web来说是Html界面。

 模型(Model):就是业务流程/状态的处理以及业务规则的规定。业务流程的处理过程对其他层来说是不透明的,模型接受视图数据的请求,并返回最终的处理结果。业务模型的设计可以说是MVC的核心。

 控制器(controller)可以理解为一个分发器,它来决定选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求,控制层并不做任何的数据处理,他负责接受用户的请求,将模型与视图匹配在一起,共同完成用户请求。

一个模型可以对应多个视图,一个视图可能对应多个模型。多个视图与多个模型协同工作。

技术分享

 

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的困难。

MVC(模型---视图---控制器)

标签:

原文地址:http://www.cnblogs.com/bluebean/p/5726148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!