1 / 13
文档名称:

到底什么是MVC?.docx

格式:docx   大小:634KB   页数:13
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

到底什么是MVC?.docx

上传人:dlmus1 2018/5/20 文件大小:634 KB

下载得到文件列表

到底什么是MVC?.docx

相关文档

文档介绍

文档介绍:到底什么是MVC?
出处信息
先前整理过一篇文章,讲的是如何使用Php搭建Mvc框架,前几天看了一些文章,对MVC又有了新的认识,具体整理如下:
一、Classic MVC
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。最早由Trygve Reenskaug在1978年提出,并应用在Smalltalk系统中。
Classic Mvc模式:
Model:封装领域数据及逻辑。用于管理应用程序域的行为和数据,并响应为获取其状态信息(通常来自视图)而发出的请求,还会响应更改状态的指令(通常来自控制器)。
View:查询领域数据并展现给用户。用于管理信息的显示。
Conctroller:截获用户请求并改变领域数据。用于解释用户的鼠标和键盘输入,以通知模型和/或视图进行相应的更改。
从依赖关系看,Model不依赖View和Controller,而View和Controller依赖Model。
Classic MVC关注两个分离:
从Model中分离View
从View中分离Controller
从Model中分离View,主要基于以下几点考虑:
不同的关注点:Model关注内在的不可视的逻辑,而View关注外在的可视的逻辑。
多种表现形式:同一个Model往往需要多种View表现形式。
提高可测试性:相对Model而言,View是不容易测试的。
Desktop软件的时代,View和Controller往往是一一对应的关系,所以常常把他们合并成为UI,事实上,当时多数UI框架都没有实现从View中分离Controller。后来随着Web的兴起,这种分离(模板技术)才开始流行起来。
本质上Classic MVC的结构如下图所示,之所以说本质上,是因为View和Controller其实是彼此关联的,但这种关联和稍后提到的MVP完全不同,更像是一种框架的副产品,为了避免引起混淆,这里省略了它们,具体参阅:How to use Model-View-Controller (MVC)
Controller截获用户通过鼠标或键盘发出的请求,然后改变Model的状态,Model通过Observer Synchronization(观察者模式)通知View自己的状态发生了变化。View查询Model展现数据。
Classic MVC并不完美,不适用于复杂的逻辑。举个例子:用户通过鼠标拖动滚动条来调整音量大小,如果音量大于某个数值,背景色变红以示提醒。当使用Classic MVC的时候,如何处理背景色变红的逻辑呢?
有两个选择:
Model触发一个特殊事件,View收到后完成相关逻辑的处理。但我们前面说过,从依赖关系上看,Model应该完全无视View的存在。
在View中判断音量临界值,达到后完成相关逻辑的处理。但我们前面说过,View是不容易测试的,应该尽可能减少逻辑处理。
Classic MVC并不完美,不适用于复杂的逻辑。举个例子:用户通过鼠标拖动滚动条来调整音量大小,如果音量大于某个数值,背景色变红以示提醒。当使用Classic MVC的时候,如何处理背景色变红的逻辑呢?有两个选择:
Model触发一个特殊事件,View收到后完成相关逻辑的处理。但我们前面说过,从依赖关系上看,Model应该完全无视View的存在。
在View中判断音量临界值,达到后完成相关逻辑的处理。但我们前面说过,View是不容易测试的,应该尽可能减少逻辑处理。
上述只是提出了Classic MVC的一些缺陷,那到底如何解决呢?请继续关注下文~
二、Application Model MVC
大概上世纪八十年代,ParcPlace从Xerox Parc划分出来,负责Smalltalk的研发工作,为了适应更复杂的逻辑,开发了Classic MVC的改进版,也就是Application Model MVC,在原有架构基础上引入了Application Model,如下图所示:
Application Model在Model和View、Controller之间扮演着一个中继者的角色。接着看前面的例子,既然Model和View都不适合放背景色变红的逻辑,那么我们可以尝试把相关逻辑放在Application Model中实现,当用户通过鼠标调整音量大小时,Model触发一个普通事件,Application Model拦截到这个事件,判断音量是否大于临界值,如果是就触发一个特殊事件,View收到后完成相关逻辑的处理。
Application Model MVC虽然看似解决了复杂逻辑的问题,但

最近更新

2026年元旦亲子体育活动方案 12页

2023年四川华新现代职业学院单招职业适应性考.. 39页

2026年元宵节猜灯谜趣味方案 34页

2023年四川文轩职业学院单招职业技能测试模拟.. 39页

2023年大庆职业学院单招职业适应性考试模拟测.. 39页

2023年大连航运职业技术学院单招职业倾向性考.. 40页

2023年天津交通职业学院单招职业技能考试题库.. 41页

2023年天津海运职业学院单招职业技能测试题库.. 39页

2023年天津职业大学单招职业适应性考试模拟测.. 39页

2023年太原城市职业技术学院单招职业倾向性测.. 39页

2023年娄底幼儿师范高等专科学校单招职业技能.. 40页

2026年儿童节文案短句干净 18页

2023年宁夏银川市单招职业倾向性考试题库汇编.. 40页

2023年安徽交通职业技术学院单招职业技能考试.. 39页

2023年安徽国际商务职业学院单招职业技能测试.. 42页

2026年儿科医生年度个人总结 22页

2026年儒林外史读书笔记电子版 11页

2026年傅雷家书读书笔记读书笔记 11页

2023年安徽省黄山市单招职业适应性测试题库新.. 40页

2023年安徽警官职业学院单招职业技能测试题库.. 39页

2023年宜昌科技职业学院单招职业技能测试模拟.. 40页

2023年宝鸡职业技术学院单招职业适应性考试模.. 39页

2023年宿迁职业技术学院单招职业倾向性考试题.. 41页

2023年山东劳动职业技术学院单招职业适应性考.. 41页

2023年山东旅游职业学院单招职业倾向性考试模.. 42页

2026年假期结束开学后的心情日记 6页

2023年山东省淄博市单招职业适应性考试题库完.. 40页

2023年山西运城农业职业技术学院单招职业技能.. 40页

2026年债权调解协议书范本 19页

2025年国家开放大学《建筑力学》章节测试参考.. 13页