123

根据SunMsdn的说法,这是一种设计模式。

根据维基百科,它是一种架构模式

与设计模式相比,架构模式的规模更大。(维基百科-架构模式

或者它是一种架构模式,也有设计模式?

哪一个是真的?

4

10 回答 10

69

MVC 更多的是一种架构模式,但不是完整的应用程序。MVC 主要与应用程序的 UI / 交互层有关。你仍然需要业务逻辑层,也许是一些服务层和数据访问层。也就是说,如果您使用 n 层方法。

于 2009-12-08T13:05:06.767 回答
49

为什么其中之一必须是真的?

两者都可能是真的,这取决于观点。

MVC 可以是一种架构模式,如果它构成了应用程序架构的基础。

它也可以被视为一种简单的设计模式,一种适用于任何应用程序的抽象概念。

于 2009-12-08T13:05:20.060 回答
31

设计模式说明如何有效地编写代码(考虑Code Metrics)。

几个好处:

  1. 易于维护
  2. 高复用性
  3. 由于抽象而可读

架构模式说明了如何有效地利用资源。

  1. 像程序员和图形设计师这样的并行任务执行可以并行工作。
  2. 可以利用多种技术来构建软件。

在 MVC 中, a)。可以使用 javascript 模板创建视图,也可以使用 html b)。控制器可以编写为 .NET 框架和 c)。模型可以用 Java 编写——可以使用只返回 json 数据的 java 服务。

在设计模式中,无法实现一种可以用多种技术编写代码的模式,例如 Java 中的 AdminUser 类、C# 中的 Customer 类、Php 中的 Partners 类和 Ruby 中的工厂模式 :);嗯..那么容易吗?:)

于 2012-03-05T17:49:47.740 回答
9

我知道它已经在不久前得到了回答,但是还没有人提到让 MVC 出名的书:Buschmann 等人于 1996 年出版的面向模式的软件架构 (POSA)。虽然不像设计模式这本书那样被广泛阅读,由 Gamma 等人撰写,POSA 是模式社区使用的基础书籍之一。

哦,POSA 非常清楚地将 MVC 识别为一种架构模式。我的预感是 MS 和 Sun 只是草率地把每种模式都称为“设计模式”。

于 2010-04-01T16:10:18.167 回答
5

模型/视图/控制器 (MVC) 三元组中的设计模式包括但可能不限于:

  • 观察者,解耦对象,以便对一个(模型)的更改可以影响任意数量的其他对象(视图),而无需更改的对象(模型)知道其他对象(视图)的详细信息。

  • Composite,它让我们可以像对待一个单独的对象(视图组件)一样对待一个组对象(一个复合视图)。

  • 策略,其中视图使用 Controller 子类的实例来实现特定的响应策略;要实现不同的策略,只需用不同类型的控制器替换实例即可。

  • Factory Method,指定视图的默认控制器类。

  • 装饰器,添加滚动到视图。


参考

  • 第 4 到 6 页(第 1.2 节 Smalltalk MVC 中的设计模式)
  • 第 293 到 304 页(观察者设计模式)
  • 第 163 到 174 页(复合设计模式)
  • 第 315 到 324 页(策略设计模式)
  • 第 107 到 116 页(工厂方法设计模式)
  • 第 175 到 185 页(装饰器设计模式)

埃里克·伽马、理查德·赫尔姆、拉尔夫·约翰逊和约翰·弗利赛德斯。设计模式:可重用的面向对象软件的要素。Addison-Wesley,马萨诸塞州雷丁,1994 年。

于 2017-11-03T20:02:49.447 回答
3

我认为两者都是真的。如果您在 Ruby on Rails 之类的框架中查看 MVC 的特定实例化,则该实例化更像是一种设计模式。如果您将 MVC 视为一个通用概念,它更像是一种架构模式。

于 2009-12-08T13:03:50.123 回答
2

MVC 总是在软件架构书籍中作为/在表示层中提到和介绍。

阅读这些书籍:

  1. 为企业构建 Microsoft.NET 解决方案(微软出版社)

  2. 专业的 ASP.NET 设计模式(Wrox)

  3. 使用 Microsoft.NET 的企业解决方案模式(微软出版社)

  4. 企业应用架构模式(Addison Wesley)

  5. 企业架构实用指南(Prentice Hall)

于 2011-11-23T17:24:29.923 回答
2

如果你把十个软件架构师放在一个房间里,让他们讨论什么是模型-视图-控制器模式,你最终会得到 12 种不同的意见。......那里的一些纯粹主义者不可避免地会对我所说的“MVC”产生疑虑。随时在此网页底部的留言板上留下热情洋溢的评论。我很乐意对 MVC 的含义提出不同的看法,但请记住,我不在乎。

乔什·史密斯

于 2011-11-27T16:25:00.237 回答
1

根据 Martin Fowler 的说法,它们是 GUI 架构:Martin Fowler-GUI architectures

它取决于应用程序的大小,因为它只影响与 GUI 相关的类,在一个小的(主要是 GUI)中,它可以被认为是一种架构模式,而在一个巨大的中,它只是一种应用于 GUI 的设计模式代码(可能是应用程序代码的 10%)。

于 2009-12-08T13:09:25.060 回答
0

MVC 是架构模式。非常清楚地说明并显示在http://molecularsciences.org/zend/mvc_model_view_controller

于 2011-04-15T21:46:55.677 回答