【问题标题】:What is the best definition of MVC?MVC 的最佳定义是什么?
【发布时间】:2009-01-08 17:41:46
【问题描述】:

我一直在使用带有 MVC 配置的 Zend 框架,阅读了有关 Ruby on Rails 的信息,并且我计划探索 Python 中的其他 MVC 框架(Django?)。我真的很喜欢它隔离逻辑、安全性和验证的某些部分的方式。但是在使用它仅仅一年之后,我读到了一个答案here,说几乎每个人都对 MVC 有错误的定义,这让我想知道:什么是 MVC 的正确定义,我在哪里可以阅读有关模式和标准实现的信息?

更新:我知道我们都知道 BASIC 定义(有一个模型、一个控制器和一个视图,控制器上的操作在使用模型进行某些操作后会转到带有一些信息的视图)但是我很想知道你认为每个人都知道的定义是什么以及为什么它是错误的(也许这会向每个人解释可能存在错误、意见的地方,当然还有你对此的真实观点)

【问题讨论】:

    标签: model-view-controller design-patterns


    【解决方案1】:

    在人们对 MVC 的理解中,我发现的最大错误是他们认为该模式包含的内容比实际包含的要多。更具体地说,人们经常认为:

    • 模型 = 数据库
    • 视图 = HTML
    • 控制器 = 业务逻辑和其他一切。

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

    【讨论】:

    • 我没有投票,因为我不确定模型应该做真正的业务工作,我认为控制器可以做的不仅仅是映射(这是路由器的工作)。
    【解决方案2】:

    请参阅 Martin Fowler 所著的《企业应用程序架构模式》一书的第 14 章。

    关于 MVC 的部分以:

    “模型视图控制器(MVC)是其中之一 被引用最多的(也是被错误引用最多的) 周围的图案。它开始作为一个 Trygve 开发的框架 用于 Smalltalk 平台的 Reenskaug 在 1970 年代后期。从那以后它有了 在大多数 UI 中发挥了重要作用 框架和思考 用户界面设计。”

    它还说:

    “当我想到 MVC 时,我看到了两个 主要分离:分离 从模型的介绍和 将控制器与 查看。

    ...

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

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

    【讨论】:

      【解决方案3】:

      我相信 Martin Fowler 给出的 MVC 定义 here。但是,您可能想注意到这些框架或多或少都有自己的调整。例如,像 Django 这样的框架由于其模板特性而更像是 Model-Template-Controller。

      【讨论】:

        【解决方案4】:

        我相信同样的事情。就我而言,任何能够将显示、数据/业务对象和它们的控制(初始化、响应用户输入)的关注点分开的东西都会获得 MVC 寻求提供的好处。

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

        This 很好地记录了 MVC 范式的一些历史和流行实现。我们应该在其中添加推荐用于 WPF 的 Model - View - ViewModel 模式。

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

              项目分为三个部分:

              1. 模型:表示到数据库中。
              2. 视图:表示到您的项目界面中,您可以使用 html、javaScript 和 css 来实现。
              3. 控制器:这是您在函数中表示的业务逻辑,它也是代表安全级别的模型和视图之间的链接。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2017-10-10
                • 1970-01-01
                • 1970-01-01
                • 2022-07-03
                • 1970-01-01
                • 2015-12-11
                • 1970-01-01
                相关资源
                最近更新 更多