博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么GOF的23种设计模式里面没有MVC?
阅读量:7108 次
发布时间:2019-06-28

本文共 704 字,大约阅读时间需要 2 分钟。

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)模式

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

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

转载地址:http://zilhl.baihongyu.com/

你可能感兴趣的文章
Linux与JVM的内存关系分析
查看>>
详解SpringMVC中Controller的方法中参数的工作原理——基于maven
查看>>
flask+mako+peewee(下)(解决了Error 2006: MySQL server has gone away)
查看>>
接口测试的工具
查看>>
error log
查看>>
innerHTML引起IE的内存泄漏
查看>>
转化率不好?告诉你转化飙秘诀
查看>>
Class.forName()用法详解
查看>>
Linux内核实践之工作队列【转】
查看>>
一个简单得不能再简单的“ORM”了
查看>>
交叉验证 Cross-validation
查看>>
压力测试就是一种破坏性的性能测试
查看>>
开发环境、生产环境、测试环境的基本理解和区别(转)
查看>>
angularjs学习曲线
查看>>
关于Cocos2d-x中对其他某个类的某个属性的获得
查看>>
多进程多线程优先级理解--优先级反转【转】
查看>>
BZOJ 3343: 教主的魔法 分块
查看>>
秋招笔试碰到的疑难题目1
查看>>
Zookeeper WINDOWS 安装配置
查看>>
Android应用截图嵌入到真实设备
查看>>