【问题标题】:Is a website MVC MVP or MVVM?网站 MVC MVP 还是 MVVM?
【发布时间】:2012-09-03 16:44:47
【问题描述】:

我真的无法区分标题中提到的模式。

动态网站的用户界面基本上是用 HTML、CSS 和可能的 javascript 开发的(至少,这是用户看到的)。后端可以是连接到数据库的 PHP 或 ASP(或其他)。

我相信数据库是模型,用户界面是视图。后端是控制器、演示者还是视图模型?

我会很感激一个解释性的答案,如果有必要,链接。

【问题讨论】:

标签: model-view-controller mvvm web mvp


【解决方案1】:

如果不访问源代码,您将无法确定应用程序使用了哪种设计模式。我得到了明确的印象,这就是你所要求的。

此外,您似乎对 MVC 和受 MVC 启发的设计模式的组成部分有些困惑:

  • 模型不是数据库。它是应用程序的一个层(不是类或对象),它包含所有领域业务逻辑并与至少一个数据源(可能是也可能不是一个数据库)。
  • UI 由表示层维护,该层主要由视图和类似控制器的结构组成(大部分)。

【讨论】:

    【解决方案2】:

    这篇 microsoft msdn 文章 WPF Apps With The Model-View-ViewModel Design Pattern 将 MVVM 描述为 Martin Fowler 的 Presentation Model 模式的 Microsoft 定制。他的Passive View 模式是MVP 方法。他的Supervising Controller 模式是MVC 方法。这个older article 讲述了这种模式的演变。并非所有语言和框架都对 GUI 模式有很好的支持。例如 MVVM 是微软为桌面编程发明的。网页通常具有整页刷新而不是事件驱动的“桌面”编程模型。有争议的是,试图将桌面模式缩小为网页编程模型会使它们扭曲得面目全非。

    具有事件驱动编程模型的现代 Web 框架是 ZK。这篇文章Implementing event-driven GUI patterns using the ZK Java AJAX framework 概述了使用上面提到的三个 Martin Fowler 模式编写相同的简单屏幕三次。一切都被转换为浏览器的 html 和 javascript,但实际的应用程序屏幕代码在服务器端事件驱动的“桌面”上运行。本演示文稿Design Patterns in ZK: Java MVVM as Model-View-Binder 中讨论了视图、模型和 MVC/MVP/MVVM 模式的第三部分是什么。

    【讨论】:

      猜你喜欢
      • 2012-05-03
      • 1970-01-01
      • 2010-11-20
      • 2011-06-12
      • 2012-07-09
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      相关资源
      最近更新 更多