什么是MVC(模型视图控制器)?

时间:2020-03-06 14:41:21  来源:igfitidea点击:

我最近听说MVC(模型视图控制器)一词被大量的Buzz抛弃了,但这到底是什么呢?

解决方案

到目前为止,维基百科似乎描述得最好:

http://en.wikipedia.org/wiki/Model-view-controller

模型视图控制器(MVC)是软件工程中使用的体系结构模式。模式的成功使用将业务逻辑与用户界面考虑隔离开来,从而使应用程序更容易修改应用程序的外观或者基础业务规则,而又不影响其他规则。在MVC中,模型代表应用程序的信息(数据)和用于操纵数据的业务规则;该视图对应于用户界面的元素,例如文本,复选框项目等;控制器管理涉及与用户动作模型(如击键和鼠标移动)通信的细节

这篇有关Oreilly的什么是MVC博客文章涵盖了我们。

我们可能想看看Martin Fowlers在Martin Fowlers网站上对MVC,MVP和UI架构的一般看法。

MVC是最初在Smalltalk的早期开创的一种设计模式。

概念是,模型将代表应用程序状态和逻辑,而控制器将处理"视图"之间的IO。

视图是模型中状态的表示。例如,模型可能是电子表格文档,并且我们可能具有一个将其表示为电子表格的视图和一个将其表示为数据透视表的视图。

现代MVC已被伪造的MVC网络垃圾污染,所以我让其他人回答。

MVC是一种将用户界面元素划分为3个不同概念的方法。模型是接口操作所依据的数据。视图是如何在视觉上(或者可能在听觉上)表示元素。控制器是对数据进行操作的逻辑。

例如,如果我们有一些文本要在UI中进行操作。一个简单的字符串可以表示数据。该视图可以是文本字段。控制器是一种逻辑,它可以转换来自用户的输入,例如字符或者鼠标输入,并对基础数据模型进行更改。

我喜欢Martin Fowler的这篇文章。我们会发现,严格来说,在其丰富的UI编程的原始领域中,MVC实际上或者多或者少地死了。 View和Controller之间的区别不适用于大多数现代UI工具包。

这个术语似乎最近在网络编程界崭露头角。我不确定这是否是真正的MVC,还是不确定将其名称重新用于一些密切相关但又微妙的想法。

正如我们问题上的标签所指出的那样,它是一种设计模式。但这可能对我们没有帮助。基本上,这是一种将代码组织为逻辑分组的方法,这些逻辑分组可将各个部分分开并易于修改。

简化:
模型=数据结构/业务逻辑
视图=输出层(即HTML代码)
控制器=邮件传输层

因此,当人们谈论MVC时,他们所谈论的是将代码分成这些逻辑组,以保持代码整洁和结构化,并希望实现松散耦合。通过遵循这种设计模式,我们应该能够构建可以将View完全更改为其他视图的应用程序,而无需接触控制器或者模型(即,从HTML切换到RSS)。

谷歌上有无数的教程,我敢肯定,我们会发现至少有一个教程可以用我们单击的术语来解释它。

就像许多人已经说过的那样,MVC是一种设计模式。我现在正在教我的一位同事,并以此方式进行了解释:

模型数据访问层。这可以是直接数据访问,Web服务等

视图应用程序的表示层。

控制器这是应用程序的业务逻辑。

这种模式增强了测试驱动的开发。

这是一种将应用程序(模型)的基础功能与它与用户(视图)交互的方式分开的方法。控制器协调模型和视图如何相互对话。

尽管目前风靡一时,但重要的是要记住,防止模型本身能够准确确定如何将其数据呈现​​给用户的做法可以看作是消极的事情。最明显的例子是HTML。 HTML的初衷是应该通过控制器(浏览器)将模型(HTML)与视图(呈现的网页)清晰地分开。最初的意图遭到了如此强烈的反对,以至于如果浏览器的页面像素渲染效果不佳,浏览器就会受到批评。

Xerox PARC的Trygve Reenskaug首先描述了MVC或者模型-视图-控制器用户界面范例。最早出现在1981年8月的Byte杂志第8卷第6期上。