1、最近工作的事情不太多,自己flex水平也很一般,只是经常用这个框架而从来没有系统的分析过感觉还是很笼统;
自己也希望看一些框架的源代码来提高自己,苦于大部分框架源代码太多而自己太懒而搁浅,碰巧pureMVC for Flex的代 码不是很多,所以想以此为以后研究其他源代码的开篇。
2、先上一个官方的类的结构图:

3、首先了解一下第一个接口:IController
package org.puremvc.as3.interfaces
{
public interface IController
{
/**作用:负责绑定消息和消息的处理方法,
* 其实在Controller类中存在一个数组(其实更确切点是Map)commandMap,
* 形如commandMap[ notificationName ] = commandClassRef;
* 在commandMap中存在以notificationName 作为key,commandClassRef 作为value的key-value形式的对象,
* 当某个消息发出时,通过消息的名称(notificationName)作为key,找到消息处理函数commandClassRef。
*
* @param notificationName 消息的名称
* @param commandClassRef 处理消息的类
*/
function registerCommand( notificationName : String, commandClassRef : Class ) : void;
/**作用:通过给定的INotication接口的实例Notification对象得到消息的名称
* (Notification是一个消息对象,保存消息类型、名称、消息体);
* 获取消息名称后,再通过之前绑定消息名称和处理消息的类的数组commandMap来
* 通过key(消息名称)得到value(消息处理类),并执行这个消息处理类。
*
* @param notification 一个消息对象
*/
function executeCommand( notification : INotification ) : void;
/**
* 作用:通过消息名称从commandMap中移除这个绑定的消息处理类
*
* @param notificationName 和要移除的消息处理类绑定的消息名称
*/
function removeCommand( notificationName : String ):void;
/**
* 作用:通过给定的消息名称来检查commandMap中是否存在与之对应的消息处理类
*
* @param notificationName 消息名称
* @return 返回在commandMap中是否存在这样一个与之绑定的消息处理类(布尔值)
*/
function hasCommand( notificationName:String ) : Boolean;
}
}
本文深入分析了 PureMVC for Flex 的核心组件之一——控制器接口(IController)。介绍了该接口的主要功能,包括消息绑定、消息处理、移除绑定及检查绑定状态等操作的具体实现方式。

被折叠的 条评论
为什么被折叠?



