MVC是设计模式还是建筑模式

JCa*_*sso 101 model-view-controller design-patterns architectural-patterns

根据SunMsdn的说法,它是一种设计模式.

根据维基百科,它是一种建筑模式

与设计模式相比,建筑模式的规模更大.(维基百科 - 建筑模式)

或者它是一种具有设计模式的建筑模式?

哪一个是真的?

小智 51

MVC更像是一种架构模式,但不适用于完整的应用程序.MVC主要涉及应用程序的UI /交互层.您仍然需要业务逻辑层,可能还需要一些服务层和数据访问层.也就是说,如果你采用n层方法.

  • 是的,我会说MVC是您的Presentation层的架构模式. (15认同)
  • 我强烈反对"MVC主要涉及应用程序的UI /交互层".MVC中的"M"/模型_是业务层,您可能希望将其拆分为多个层. (7认同)

Ode*_*ded 38

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

根据观点,两者都可以是真的.

如果MVC构成应用程序体系结构的基础,则它可以是一种体系结构模式.

它也可以看作简单的设计模式,适用于任何应用程序的抽象概念.


小智 26

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

一些好处:

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

建筑模式说明如何有效地利用资源.

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

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

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


Joh*_*ohn 6

我知道它已经被回答了一段时间,但是还没有人提到使MVC成名的那本书:面向模式的软件架构(POSA),由Buschmann等人于1996年出版.尽管没有像设计模式书那样广泛阅读通过Gamma等人,POSA是模式社区使用的基础书籍之一.

哦,POSA非常清楚地将MVC识别为架构模式.我的预感是MS和Sun只是邋and并称每种模式都是"设计模式".


Geo*_*rge 6

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

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

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

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

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

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


参考

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

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

  • 谢谢,其他答案都错了。这绝对不是“取决于观点”,有几十张或几百张选票并不会让错误的事情成为事实。MVC 本身并不是一种设计模式,它是一种使用您提到的几种设计模式将代码架构为 3 层的方法。所有在幕后实现 MVC 的框架都使用 Observable、Strategy 和组合模式的概念。理解 MVC 的最好方法是创建自己的实现,然后您就会理解背后的设计模式。 (2认同)