MVC是devise模式还是架构模式
根据Sun和Msdn的说法,这是一个devise模式。
根据维基百科,这是一个build筑模式
与devise模式相比,build筑模式的规模更大。 (维基百科 – build筑模式 )
或者是一个build筑模式,也有一个devise模式?
哪一个是真的?
MVC更多的是一个架构模式,但不是完整的应用程序。 MVC主要涉及应用程序的UI /交互层。 你仍然需要业务逻辑层,也许是一些服务层和数据访问层。 也就是说,如果你进入n层的方法。
为什么其中一个必须是真的?
两者都可以是真实的,这取决于观点。
如果构build应用程序体系结构的基础,MVC可以是一个架构模式。
它也可以被看作简单的devise模式,一个适用于任何应用程序的抽象概念。
devise模式指出如何有效地编写代码(考虑代码度量 )。
一些好处:
- 易于维护
- 高重用性
- 因为抽象而可读
build筑模式说如何有效地利用资源。
- 并行任务的执行,如程序员和graphicsdevise师可以并行工作。
- 可以利用多种技术来构build软件。
在MVC中, a)。 可以使用javascript模板创build视图,也可以使用html b)。 控制器可以编写.NET框架和c)。 模型可以用Java编写 – 可以使用只返回json数据的java服务。
在devise模式中,一个模式不能实现 ,代码可以用多种技术编写,如Java中的AdminUser类,C#中的Customer类,Php中的Partners类以及Ruby中的工厂模式。 嗯..容易?:)
我知道它已经被回答了一段时间,但是还没有人提到使MVC出名的书:1996年出版的Buschmann等人提出的面向模式的软件体系结构(POSA)。虽然没有被广泛阅读的devise模式书,由Gamma等人,POSA是模式社区使用的基础书籍之一。
哦,POSA非常清楚地将MVC标识为一种架构模式。 我的直觉是,MS和Sun只是sl and不驯,把每一个模式都称为“devise模式”。
我认为这两个都是事实。 如果您正在像Ruby on Rails这样的框架中查看MVC的特定实例 ,则该实例更像是一种devise模式。 如果你把MVC看作是一个普遍的概念 ,那更多的是一种架构模式。
MVC总是在软件体系结构的书中提到和介绍成表示层。
阅读这些书籍:
-
为企业构buildMicrosoft.NET解决scheme (微软出版社)
-
专业的ASP.NETdevise模式 (Wrox)
-
使用Microsoft.NET Enterpise解决scheme模式 (Microsoft新闻)
-
企业应用程序体系结构 (Addison Wesley)
-
企业架构实用指南 (Prentice Hall)
如果你把十个软件架构师放到一个房间里,让他们讨论一下模型 – 视图 – 控制器的模式,你将会得到十二种不同的意见。 一些纯粹主义者不可避免地会对我所说的“MVC”产生疑虑。 请随时在本网页底部的留言板留言。 我很乐意对MVC的含义有不同的看法,但请记住,我不在乎。
约什史密斯
根据Martin Fowler的说法,他们是GUI架构: Martin Fowler-GUI架构
它取决于应用程序的大小,因为它只影响GUI相关的类,在一个小的(主要是GUI)中,它可以被认为是一个架构模式,而在一个巨大的模式中,它只是一个devise模式,你应用到GUI代码(可能是应用程序代码的10%)。
MVC是架构模式。 非常清楚地陈述和显示在http://molecularsciences.org/zend/mvc_model_view_controller
模型/视图/控制器(MVC)三元组中的devise模式包括但不限于:
-
Observer将对象解耦,以便对一个(模型)的更改可以影响其他任何数量的(视图),而不需要更改的对象(模型)知道其他(视图)的细节。
-
复合 ,它使我们可以像处理单个对象(视图组件)一样处理组对象(复合视图)。
-
策略 ,其中视图使用Controller子类的实例来实现特定的响应策略; 为了实现不同的策略,只需用不同的控制器replace实例。
-
工厂方法 ,指定视图的默认控制器类。
-
装饰者 ,添加滚动视图。
参考
- 第4页到第6页(第1.2节Smalltalk MVC中的devise模式)
- 第293至304页(观察者devise模式)
- 第163至174页(复合devise模式)
- 315页至324页(策略devise模式)
- 页107至116(工厂方法devise模式)
- 第175至185页(装饰devise模式)
Eric Gamma,Richard Helm,Ralph Johnson和John Vlissides。 devise模式:可重用的面向对象软件的元素 。 Addison-Wesley,Reading,MA,1994。