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; } }