PureMVC的通信并不采用Flash的EventDispatcher/Event机制,而是使用观察者模式以一种松耦合的方式来实现的。
PureMVC的通信主要依靠三个类来实现:Observer、Notitication和Notifier。我们可以在org.puremvc.patterns.observer包里面找到这三个类,下面就来看看这三个类是怎么实现的吧
Observer类实现了IObserver接口,在PureMVC中,IObserver接口主要是用于处理notification方法和上下文,并提供notify方法,具体如下: 而Observer的主要工作也正是这些,只不过其有两个属性:notify(Function, notification函数)和context(Object, 上下文对象)
呵呵,先来看看API文档的说法(英文的)
Notifications are not meant to be a replacement for Events in Flex/Flash/AIR. Generally, IMediator implementors place event listeners on their view components, which they then handle in the usual way. This may lead to the broadcast of Notifications to trigger ICommands or to communicate with other IMediators. IProxy and ICommand instances communicate with each other and IMediators by broadcasting INotifications.
A key difference between Flash Events and PureMVC Notifications is that Events follow the 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy until some parent component handles the Event, while PureMVC Notifications follow a 'Publish/Subscribe' pattern. PureMVC classes need not be related to each other in a parent/child relationship in order to communicate with one another using Notifications.
呵呵,在这就不翻译了,E文不行啦。
当然,Notification就是我们传送的信息的主体,所有传递的信息都放在这个类对象里面。Notification保存信息的对象名称、类型及传递的信息内容,并且提供了相应的getter/setter。
这个类简单,就是用于发送信息,所以只提供了一个sendNotification()方法用于发送信息。不过我们查看源代码,可以看到,它其实是通过调用Facade的sendNotification()来处理消息的发送
public function sendNotification( notificationName:String, body:Object=null, type:String=null ):void
{
facade.sendNotification( notificationName, body, type );
}
// Local reference to the Facade Singleton
protected var facade:IFacade = Facade.getInstance();
对于MVC中的Mediator、Proxy、Command三个类而言,Mediator对象可以发送、声明、接收Notification,Proxy只发送,不接收Notification。
当用View注册Mediator时,Mediator的listNotifications方法会被调用,以数组形式返回该Mediator对象所关心的所有Notification。之后,当系统其它角色发出同名的Notification(通知)时,关心这个通知的Mediator都会调用handleNotification方法并将Notification以参数传递到方法。
在很多场合下Proxy需要发送Notification(通知),比如:Proxy从远程服务接收到数据时,发送Notification告诉系统;或当Proxy的数据被更新时,发送Notification告诉系统。
如果让Proxy也侦听Notification(通知)会导致它和View(视图)层、Controller(控制)层的耦合度太高。
View和Controller必须监听Proxy发送的Notification,因为它们的职责是通过可视化的界面使用户能与Proxy持有的数据交互。
发表评论
-
SQL Server -- 从全文索引中去掉普通字符串
2012-07-06 09:52 1038SQL Server 2008引入了标识出那些对全文索引搜 ... -
.net正则基础
2012-07-06 09:46 570初学正则时,对于Regex类不熟悉,遇到问题不知道该用哪种 ... -
Android 桌面组件【app widget】 进阶项目②--心情记录器
2012-07-03 13:44 560本篇完成项目名称 ... -
ActionScript 3.0综合应用案例(图像识别+位图滤镜+Molehill)
2012-07-02 12:55 696本文是对ActionScript 3.0的一个综合应用案例 ... -
Popup窗口访问父窗口的方法以及相互传值
2012-07-02 12:55 847owner属性 此 IVisualElement 对象的 ... -
3D 视频墙 3D IMAGE/MEDIA GRID/WALL GALLERY
2012-07-02 12:55 706If you are interested with th ... -
第11课 spark基本类型
2012-07-02 12:55 480session11/src/Tester.mxml ... -
使用ItemRenderer为DropDownList定义下拉选项
2012-07-02 12:55 521首先新建一个ItemRenderer组件 flex/sp ... -
为什么用*? 为什么不用*?
2012-07-01 10:24 560离开RoR有一段时间了,本来不想提些负面的东西,不过JE猎 ... -
谈谈我对未来的想法吧
2012-07-01 10:24 502来总行珠海研发中 ... -
实战 OpenLaszlo 与 db4o
2012-07-01 10:24 441本文于去年年底完 ... -
java面笔试总结
2012-07-01 10:24 5752010、10、12 湖南华诺集团面试题集 1、D ... -
AS3 库资源 很多非常有用的类库 - Qzone日志
2012-06-30 16:50 493AS3 库资源 很多非常有用的类库 - Qzone日志 20 ... -
flex 联机游戏开发 - 四国军棋游戏:(一)引子
2012-06-30 16:50 725flex 联机游戏开发 - 四国军棋游戏:(一)引子 201 ... -
使用FLEX 和 Actionscript开发FLASH 游戏2-2
2012-06-30 16:50 474使用FLEX 和 Actionscript开发FLASH 游戏 ... -
基于Flash的即时通讯开发思路
2012-06-30 16:49 804基于Flash的即时通讯开 ... -
非常有用的类库 APIs、Libs、Components
2012-06-30 16:49 661非常有用的类库 APIs、Libs、Components 2 ...
相关推荐
如你下载后的存放的目录是D组:/下载,解压后将创建一个名为PureMVC_AS3_2_0_4的文件夹(注:其中的2_0_4是版本号) ; 打开PureMVC_AS3_2_0_4文件夹,您会发现里面有三个文件夹: asdoc :对应于API的文档,它的首页...
PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC...
PureMVC五子棋游戏源码,学习PureMVC
用PureMvc开发Air项目,完整工程实例。 学PureMvc的第一个完整例子
这是一个使用C#开发语言的基于PureMVC框架的Web登录Demo,是网上绝无仅有的实例。 本文以初学者的视角,详细地介绍PureMVC在ASP.NET的应用。 PureMVC不仅仅是Flex的MVC框架哦,而且它非常的小巧,还等什么呢,快来...
pureMVC框架dll文件,
按照puremvc官方网站教程做的登陆实例,在flexBuilder3上运行过.绝对好用. 供大家学习参考.
这个是一个根据AS3(ActionScript 3) pureMVC而转换过来的lua pureMVC。所有的接口完全跟AS3版本一致。 若是想使用,可以直接查看网上的pureMVC 文档,我并未对任何一个函数改名或者更换参数位置。 注意,这个PureMVC...
pureMVC项目包 导入的包 pureMVC项目包pureMVC项目包
flex PureMVC框架实例 flex PureMVC框架
pureMVC框架 pureMVC源码 学习pureMVC的知识
这是一个MVC例子,简单的接受了MVC的实现过程。
PureMVC学习资料与案例PureMVC学习资料与案例PureMVC学习资料与案例PureMVC学习资料与案例
介绍了PureMVC框架结构以及PureMVC下消息发送机制,有助于更好的了解和学习PureMVC架构
一个以pureMVC为flex前端框架,blazeds为通信服务器,spring和hibernate为服务端框架,实现了增删改等功能的完整实例,数据库使用mysql,部分关键地方加了注释,enjoy!
本例子运用PureMVC框架编写的简单例子,初学者可以通过本例子理解PureMVC的实现过程,各层的主要职责及如何通信.
适合Unity的pureMVC,做UI和逻辑分成。比较适合的工具
puremvc 讲解puremvc的源码
Flex framework ,又一个新的flex界面框架
puremvc .net 2.0 /vs2010 使用PUREMVC