MVC的最佳定义是什么?

时间:2009-01-08 17:41:47

标签: model-view-controller design-patterns

我一直在MVC配置中使用Zend Framework,在rails上阅读ruby并计划在Python中检查其他MVC框架(Django?)...我真的很喜欢它隔离逻辑的某些部分,安全性和验证。但是在使用它仅仅1年之后我读了一个答案here说几乎每个人都有错误的MVC定义,这让我想知道...... MVC的正确定义是什么?我在哪里可以阅读关于模式和标准实现的内容?

更新:我承诺我们都知道BASIC定义(模型是一个控制器和一个视图,控制器上的动作在使用模型制作了一些信息后会带到一些信息)我很想知道你认为每个人都知道的定义是什么以及为什么它是错的(也许这会向每个人解释哪里可能存在错误,意见,当然你对此有什么看法)

7 个答案:

答案 0 :(得分:20)

我发现人们对MVC的理解最大的错误是他们认为这种模式包含的内容比它更多。更具体地说,人们通常认为:

  • Model = DataBase
  • 查看= HTML
  • Controller =业务逻辑及其他所有内容。

这通常是在较小的应用程序中工作的方式,但是现实MVC是一种从演示代码中分离业务代码的方法。该模型完成所有真正的业务工作。视图提供外观,控制器将一个映射到另一个。

答案 1 :(得分:14)

参见本书的第14章:企业应用程序架构的模式,作者:Martin Fowler。

关于MVC的部分以:

开头
  

“模型视图控制器(MVC)是其中之一   报价最多(也是最错误引用)   周围的图案。它始于一个   由Trygve开发的框架   Reenskaug用于Smalltalk平台   在20世纪70年代后期。从那时起它就有了   在大多数UI中发挥了重要作用   框架和思考   UI设计。“

它还说:

  

“当我想到MVC时,我看到两个   主要分离:分离   从模型和   将控制器与控制器分开   图。

     

...

     

这些分离   演示和模型是其中之一   最重要的设计原则   软件,也是唯一一次   不应该遵循它是非常简单的   模型没有真实的系统   无论如何,它的行为。只要你   你应该得到一些非可视逻辑   应用分离。不幸的是,一个   很多UI框架都能实现   困难,而那些不困难   经常在没有分离的情况下教授。

     

视图和控制器的分离   不太重要,所以我只是   建议在真的时候这样做   很有帮助。对于富客户端系统,那   尽管如此,最终几乎没有   它在Web前端很常见   控制器被分离出来。最   这里的网页设计模式是   基于这个原则。“

答案 2 :(得分:3)

我相信Martin Fowler给出的here MVC定义。但是,您可能想要注意这样一个事实,即这些框架或多或少都有自己的调整。例如,由于其模板功能,像Django这样的框架更像是模型 - 模板 - 控制器。

答案 3 :(得分:2)

我相信同样的事情。至于我担心任何能够分离显示问题的事情,数据/业务对象及其控制(初始化,响应用户输入)都会获得MVC希望提供的好处。

目标是将这些项目移动到可重复使用的组件中,并能够交换不同的实现,并且能够单独测试各个部分。 IMO就是MVC的全部内容。

This是对MVC范例的一些历史和流行实现的非常好的写作。我们也应该在那里添加推荐用于WPF的Model - View - ViewModel模式。

答案 4 :(得分:2)

模型 - 视图 - 控制器模式提出了在软件开发中使用的三个主要组件或对象:

  • 一个模型,它表示软件应用程序中的数据的基础逻辑结构以及与之关联的高级类。此对象模型不包含有关用户界面的任何信息。
  • 一个视图,它是表示用户界面中元素的类的集合(用户可以在屏幕上看到和响应的所有内容,例如按钮,显示框等)
  • 一个Controller,它表示连接模型和视图的类,用于在模型和视图中的类之间进行通信。

答案 5 :(得分:1)

MVC是三种ASP.NET编程模型之一。 MVC是使用MVC(模型视图控制器)设计构建Web应用程序的框架:Model表示应用程序核心(例如数据库记录列表)。视图显示数据(数据库记录)。

答案 6 :(得分:1)

该项目分为三个部分:

  1. model:表示为数据库。
  2. view:表示你的项目界面,你可以使用html,javaScript和css。
  3. 控制器:这是您的功能中表示的业务逻辑,它也考虑了代表安全级别的模型和视图之间的链接。