PureMVC源码分析.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档