标签:
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的困难。
标签:
原文地址:http://www.cnblogs.com/bluebean/p/5726148.html