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

时间:2009-12-08 13:00:17

标签: model-view-controller design-patterns architectural-patterns

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

根据Wikipedia,它是一种架构模式

  

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

或者它是一种具有设计模式的架构模式?

哪一个是真的?

10 个答案:

答案 0 :(得分:51)

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

答案 1 :(得分:38)

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

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

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

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

答案 2 :(得分:25)

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

一些好处:

  1. 易于维护
  2. 高可重用性
  3. 因抽象而可阅读
  4. 建筑模式说明如何有效利用资源。

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

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

           

      在设计模式中,无法实现 模式   代码可以用多种技术编写,比如Java中的AdminUser类,   C#中的客户类,Php中的Partners类和Ruby中的工厂模式   :);嗯......太容易了?:)

答案 3 :(得分:6)

我知道它已经在前一段时间得到了解答,但是还没有人提到过让MVC出名的那本书:面向模式的软件架构(POSA),由Buschmann等人于1996年出版。尽管没有像设计模式书,由Gamma等人提出,POSA是模式社区使用的基础书之一。

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

答案 4 :(得分:3)

我认为两者都是真的。如果你在像Ruby on Rails这样的框架中查看MVC的特定实例化,那么实例化就更像是一种设计模式。如果你把MVC视为一般概念,它更像是一种架构模式。

答案 5 :(得分:2)

MVC总是在软件架构书籍中的表示层中提及和引入。

阅读这些书:

  1. Architecting Microsoft.NET Solutions for the Enterprise(微软出版社)

  2. Professional ASP.NET design patterns(Wrox)

  3. Enterpise Solutions Patterns Using Microsoft.NET(微软出版社)

  4. Patterns of Enterprise Application Architecture(Addison Wesley)

  5. A Practical Guide to Enterprise Architecture(Prentice Hall)

答案 6 :(得分:2)

如果您将十个软件架构师放入一个房间并让他们讨论模型 - 视图 - 控制器模式是什么,那么您最终会得到十二种不同的意见。 ......有些纯粹主义者不可避免地会对我称之为“MVC”的问题产生疑虑。请随意在本网页底部的留言板上留下火红的评论。我很乐意接受关于MVC意义的不同观点,但请记住,我不在乎。

乔什史密斯

答案 7 :(得分:1)

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

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

答案 8 :(得分:1)

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

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

  • 复合,它允许我们处理组对象(复合视图),就像我们处理其中一个单独的对象(视图组件)一样。

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

  • 工厂方法,指定视图的默认控制器类。

  • 装饰者,将滚动添加到视图中。

<强>参考

  • 第4至6页(第1.2节Smalltalk MVC中的设计模式)
  • 第293至304页(观察员设计模式)
  • 第163至174页(复合设计模式)
  • 第315至324页(策略设计模式)
  • 第107至116页(工厂方法设计模式)
  • 第175至185页(装饰设计模式)
Eric Gamma,Richard Helm,Ralph Johnson和John Vlissides。 设计模式:可重用面向对象软件的元素。 Addison-Wesley,Reading,MA,1994。

答案 9 :(得分:0)

MVC是架构模式。在http://molecularsciences.org/zend/mvc_model_view_controller

清楚陈述并显示