一、pureMVC 内核:
View、Control、Model,三者都是单例,三者的管理者、协作者是Facade,Facade负责三者之间的通信、映射、注册、初始化等,Facade也是pureMVC的启动者。
1、View层(单例):View负责对Mediator的管理;View内部有两个映射表mediatorMap、observerMap,mediatorMap用来存储所有的Mediator,observerMap存储着所有的通信观察者(Observer,即监听消息者),在注册一个Mediator之时View会自动根据Mediator内部的listNotificationInterests返回的需要观察的通信消息命令头来创建相应的观察者并映射到observerMap表中,一个消息头可以映射多个Observer;另外,在调用 RegisterCommand时也会自动将该Command作为观察者映射到该observerMap表中。
2、Control层(单例):Control内部存有所有Command的映射表,负责View和Model之间的逻辑及通信操作,以达到将View 与 Model解耦合,在调用 RegisterCommand时也会自动将该Command作为观察者映射到View中的observerMap表中。
3、Model层(单例):Model存储所有Proxy的映射,Model只与Control通信,并可以被Control直接引用或接受Control发来的消息,Model负责数据模型及远程调用的操作。
二、四者之间 的关系:
1、View可以发送至Control或接受来自Control的消息,View 不允许直接与 Model通信,两者之间的通信必须经过Control; View不允许直接通过Facade引用Control来执行代码,必须通过消息发送;View可以直接被Control通过Facade引用,但官方不支持这种写法,希望View应该尽量不开放接口;
2、Model不允许向View发送消息,但是可以向Control发送消息,也不允许直接通过Facade引用Control或View来执行代码,但是Control可以直接通过Facade引用Model来执行代码;
3、Facade提供了View、Model、Control三者的初始化、注册、删除、引用及通信的接口 。
三、通信:
1、Observer(观察者): Observer存储了正在观察的对象(即Command或Mediator对象)和对应的执行函数;
2、Notifier包含了sendNotification的接口,Command、Mediator、Proxy都是继承于Notifier。Notifier中的sendNotification中引用了Facade.sendNotification的接口;
3、Facade 中的sendNotification通过调用notifyObservers接口引用View.notifyObservers接口;
4、View中的notifyObservers实现通信:首先,通过notification.getName()在observerMap查找出对应的观察者列表;其次,循环遍历找出的对应观察者列表,调用观察者的notifyObserver接口 来执行Observer内部的观察对象的执行函数。
- 大小: 55.2 KB
分享到:
相关推荐
PureMVC详解
NULL 博文链接:https://jornyguo.iteye.com/blog/975236
PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC...
如你下载后的存放的目录是D组:/下载,解压后将创建一个名为PureMVC_AS3_2_0_4的文件夹(注:其中的2_0_4是版本号) ; 打开PureMVC_AS3_2_0_4文件夹,您会发现里面有三个文件夹: asdoc :对应于API的文档,它的首页...
PureMVC五子棋游戏源码,学习PureMVC
puremvc开发框架讲解,希望可以帮助想学的同学们
用PureMvc开发Air项目,完整工程实例。 学PureMvc的第一个完整例子
按照puremvc官方网站教程做的登陆实例,在flexBuilder3上运行过.绝对好用. 供大家学习参考.
这是一个使用C#开发语言的基于PureMVC框架的Web登录Demo,是网上绝无仅有的实例。 本文以初学者的视角,详细地介绍PureMVC在ASP.NET的应用。 PureMVC不仅仅是Flex的MVC框架哦,而且它非常的小巧,还等什么呢,快来...
这个是一个根据AS3(ActionScript 3) pureMVC而转换过来的lua pureMVC。所有的接口完全跟AS3版本一致。 若是想使用,可以直接查看网上的pureMVC 文档,我并未对任何一个函数改名或者更换参数位置。 注意,这个PureMVC...
这是一个MVC例子,简单的接受了MVC的实现过程。
PureMVC学习资料与案例PureMVC学习资料与案例PureMVC学习资料与案例PureMVC学习资料与案例
介绍了PureMVC框架结构以及PureMVC下消息发送机制,有助于更好的了解和学习PureMVC架构
pureMVC项目包 导入的包 pureMVC项目包pureMVC项目包
pureMVC框架 pureMVC源码 学习pureMVC的知识
flex PureMVC框架实例 flex PureMVC框架
适合Unity的pureMVC,做UI和逻辑分成。比较适合的工具
Flex framework ,又一个新的flex界面框架
pureMVC框架dll文件,
一个以pureMVC为flex前端框架,blazeds为通信服务器,spring和hibernate为服务端框架,实现了增删改等功能的完整实例,数据库使用mysql,部分关键地方加了注释,enjoy!