为什么MVC不是一种设计模式?

引用一段话

GoF (Gang of Four,四人组, 《Design Patterns: Elements of Reusable Object-Oriented Software》/《设计模式》一书的作者:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)并没有把MVC提及为一种设计模式,而是把它当做“一组用于构建用户界面的类集合”。在他们看来,它其实是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和组合模式(Composite)。根据MVC在框架中的实现不同可能还会用到工厂模式(Factory)和装饰器(Decorator)模式。我在另一本免费的书“JavaScript Design Patterns For Beginners”中讲述了这些模式,如果你有兴趣可以阅读更多信息。

正如我们所讨论的,models表示应用的数据,而views处理屏幕上展现给用户的内容。为此,MVC在核心通讯上基于推送/订阅模型(惊讶的是 在很多关于MVC的文章中并没有提及到)。当一个model变化时它对应用其它模块发出更新通知(“publishes”),订阅者 (subscriber)——通常是一个Controller,然后更新对应的view。观察者——这种自然的观察关系促进了多个view关联到同一个 model。

对于感兴趣的开发人员想更多的了解解耦性的MVC(根据不同的实现),这种模式的目标之一就是在一个主题和它的观察者之间建立一对多的关系。当这个 主题改变的时候,它的观察者也会得到更新。Views和controllers的关系稍微有点不同。Controllers帮助views对不同用户的输 入做不同的响应,是一个非常好的策略模式列子。

这里已经说明了,官方说这是三中设计模式的合体,不是一种纯粹的设计模式,还可能跟工厂模式装饰器模式有染,这里有一篇好文章:

为什么MVC不是一种设计模式? ---比较Backbone和Ext4.x在MVC实现上的差异

时间: 2024-10-22 14:31:43

为什么MVC不是一种设计模式?的相关文章

为什么MVC不是一种设计模式(转)

http://damoqiongqiu.iteye.com/blog/1949256 ---比较Backbone和Ext4.x在MVC实现上的差异 大漠穷秋 前言 圣人云:不想做妈咪的小姐不是好码农. 每一个码农的心中都有一个终极理想,那就是有一天不用再Coding. 在成为妈咪的道路上,“设计模式”被认为是一项必备的技能. 因此,经常有湿主会问小僧这样一个问题:为什么MVC不是一种设计模式呢? 对于这样naive的问题,小僧向来是嗤之以鼻的,你们啊!图样图森破! 机缘巧合,前段时间在焦点技术大

为什么23种设计模式里面没有MVC?

作者:lorio链接:https://www.zhihu.com/question/27738109/answer/100241918来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. GoF (Gang of Four,四人组, <Design Patterns: Elements of Reusable Object-Oriented Software>/<设计模式>一书的作者:Erich Gamma.Richard Helm.Ralph Johns

为什么GOF的23种设计模式里面没有MVC?

GoF (Gang of Four,四人组, <Design Patterns: Elements of Reusable Object-Oriented Software>/<设计模式>一书的作者:Erich Gamma.Richard Helm.Ralph Johnson.John Vlissides)并没有把MVC提及为一种设计模式,而是把它当做"一组用于构建用户界面的类集合".在他们看来,它其实是其它三个经典的设计模式的演变:观察者模式(Observer

设计模式学习第一天:23种设计模式(全)

C#常见的设计模式 一.概要: 模式分为三种,设计模式.体系结构模式与惯用法.其中惯用法是一种语言紧密相关的模式,例如,定界加锁模式其实是一种惯用法. 在C#项目开发过程中,很多情况下您已经使用了某些模式,但或许您并不知道自己所使用的这种解决方案是一种已经被总结归纳的模式. 工厂.策略.桥接.模板方法.代理等等23种Gof经典模式是属于设计模式,设计模式的粒度相对较小,基本上用于提高模块内部的可扩展性和可维护性需求 三层.MVC.IoC/DI等属于体系结构模式,粒度比设计模式大,它是从项目的整体

iOS开发中常用的几种设计模式

下面是iOS开发中比较常用的几种设计模式.详情如下所示: (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求.列表row个数delegate自定义的delegate (二)观察者模式应用场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息.优势:解耦合敏捷原则:接口隔离原

iOS 开发中的几种设计模式

目前常用的几种设计模式:代理模式.观察者模式.MVC模式.单例模式.策略模式.工厂模式.MVVM 一.代理 场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是那个类实现. 优势: 解耦合 敏捷原则:开放--封闭原则 实例:tableview的数据源delegate,通过和protocol的配合,完成委托诉求. 列表row个数delegate,自定义的delegate 一句话总结:传入对象实现对象的功能 二.观察者 场景:一般为model层对,controller和view进行的通知

谈谈23种设计模式在Android源码及项目中的应用

本文首发于个人博客:Lam's Blog - 谈谈23种设计模式在Android源码及项目中的应用,文章由MarkDown语法编写,可能不同平台渲染效果不一,如果有存在排版错误图片无法显示等问题,烦请移至个人博客,如果个人博客无法访问可以留言告诉我,转载请声明个人博客出处,谢谢. 前言 本文将结合实际谈谈23种设计模式,每种设计模式涉及 * 定义:抽象化的定义与通俗的描述,尽量说明清楚其含义与应用场景 * 示例:如果项目中有使用过该模式,则会给出项目中的代码,否则会给出尽可能简单好理解的java

两种设计模式的结合案例

摘要 本学期我学习了“设计模式-可复用面向对象软件的基础”这门课程,这次我采用的是命令模式+策略模式两种设计模式结合的案例. 分析的案例为:遥控器控制天花板上的吊扇,它有多种转动速度,当然也允许被关闭.假设吊扇速度:高.中.低 .关闭.采用安全模式+策略设计模式. 报告整体结构为:两种设计模式的分析.理解,类图,实例分析.代码分析,总结. 目录 第一章 命令模式+策略模式 1 1.1 命令模式 1 1.1.1 定义 1 1.1.2 命令模式的结构 1 1.1.3 角色 1 1.1.4 优点 2

23种设计模式概要及易懂的例子

23种设计模式(分为三大类) 因为内容是从有道云笔记挪过来的,所以排版有点丑,如有不足或错误还望指点.. 注意,一些设计模式之间的(代码)"形式"虽然相同或相似,但是"语义"是截然不同的.个人认为设计模式提倡的是一种编码思想,而不是规范. 为什么要使用设计模式?为了代码复用,增加可维护性 设计模式的六大原则 1.开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插