- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PureMVC源码分析
PureMVC
PureMVC
PPuurreeMMVVCC源码分析
PureMVC 是在基于模型、视图和控制器 MVC 模式建立的一个轻量级的开源应用框架,具
有跨平台语言无关性。最初被应用于adobe flex,actionScript 开发中,现已被移植到包括c++,
java,c#,php 等主要语言平台上,在各平台上的实现方式也几乎一样,降低了 用户学习成
本。
本文从PureMVC actionScript 版源码角度分析PureMVC 如何工作及它如何有效降低各模块
间耦合度。了解 PureMVC 如何工作需要对其源代码进行分析,源代码可在
/PureMVC_AS3下载。
PureMVC
PureMVC
一,PPuurreeMMVVCC如何工作:
首先来看一张类图:
从图中可以看到在PureMvc中最主要的类仅仅只有Model,View,Controller,Proxy,Mediator,
Command,Facade而已。学习PureMVC 之初,需要了解如下一些基本事实:
Model-Proxy
Model-Proxy
MMooddeell--PPrrooxxyy,Model 保存了所有Proxy对象的引用,Proxy负责数据的读取与存储,具体
到actionScript 可以是Loader 加载的数据,Socket 收取的数据等。
View-Mediator
View-Mediator
VViieeww--MMeeddiiaattoorr,View 保存了所有Mediator对象的引用,Mediator 对象操作具体的视图组
件,例如flex 中的DataGrid,Input等,它负责在视图组件上监听特定事件和更新视图组件。
Controller-Command
Controller-Command
CCoonnttrroolllleerr--CCoommmmaanndd,Controller 保存了所有 Command 对象的引用,Command 又分为
SimpleCommand(简单)和MacroCommand(复杂),应用程序的业务逻辑都是在Command
中实现。
在as3中,上述三种映射关系是通过Array 实现的,其中Proxy,Mediator 及Command又分
别通过 Dictionary 键值对形式保存了各自名称和实例的映射关系。具体来看个
Controller-Command 的例子。
在Controller 类中,有这一句
protected varcommandMap : Array;
那么,注册command 后,必定是保存commandMap 数组中了。代码果然是这样的,注意
方法体中最后一句:
public function registerCommand(notificationName : String,commandClassRef: Class): void
{
if (commandMap[ notificationName ]==null ) {
view.registerObserver(notificationName, new Observer(executeCommand,
this ));
}
commandMap[ notificationName ] =commandClassRef;
}
从方法的两个参数我们还可以猜到特定 notification 和command 是通过通知名和命令类引
用方式一一对应的。那么自然可以进一步联想 到PureMVC 事件机制中所谓的事件通知只
不过是通过特定notificationName 检索到相应command,然后执行command中的某个 方法,
那么registerCommand 方法就如同observer/publiser模式中订阅事件的过程。
下面就遵循 PureMVC 的设计思路,来追踪一遍“observer 订阅事件-publiser 发送事件
-observer执行监听方法”的过程。订阅事件已经讲过了,现在从事件发送讲起。
通过调用Facade 中的sendNotification 方法,就可以通知之前注册的command 去执行了:-)
public function sendNotification( notificationName:String, body:Object=null,
t
您可能关注的文档
最近下载
- 升压站(35KV、站用变、施工变、接地变、SVG)设备安装施工方案.docx
- 新教科版六上科学4.4《电能和磁能》优质课件.pptx
- 浅谈暖棚法施工冬季桥梁混凝土施工质量控制.doc VIP
- 消防安全主题班会课件——生命至上预防火灾.pptx
- 2024年资料员考试题库含答案(综合题).docx
- 战场救护知识培训PPT课件.pptx VIP
- 3.3.2 C-2.1 卫生院手术部位识别标识相关制度与流程(2024年4月修订).docx
- 【中文翻译版】美国居民膳食指南2020-2025.pdf
- 部编人教版五年级下册语文教案全册教学设计及教学反思.doc
- 学习铸牢中华民族共同体意识心得(15篇).docx VIP
文档评论(0)