PureMVC开发框架使用手册中文版(2)

2020-02-21 00:13

public class Controller 实现:Controller?IController

Controller负责保存Notice名称与Command类的映射,执行通知对应的Command。 3.3.1 属性

//================= 只允许自己和子类访问 =================== protected var view:View; //对View单例的引用

protected var commandMap:Object; //存储通知名称与Command类的映射 protected static var instance:Controller; //Controller单例

protected const SINGLETON_MSG:String = \ //消息常量 3.3.2 方法

//================== 创建Controller =============== public function Controller() //Controller是单例,不能直接调用该构造函数,而应调用单例工厂方法Controller.getInstance(),否则会抛出异常

protected function initController():void //自动被构造函数调用,可由子类覆盖,添加自定义内容,而不覆盖构造函数。注意:若自定义View的子类,则也应定义Controller的子类,并override这个方法,象这样:view = MyView.getInstance();

public static function getInstance():Controller // Controller的单例工厂方法 //================ 操作Command ===================

public function executeCommand( note:INotice ):void //执行note对应的Command。首先根据note名称,获取command类,然后,创建command实例,执行command业务逻辑。

public function addCommand( noteName:String, cmd:Class ):void //把Command类赋值给commandMap的属性,属性名为noteName。若某个noteName还没Command,则先给note添加观察者。若某个noteName已有Command,则用新command替换旧的。因为一个note,只能有一个处理者,否则就乱套了。

public function hasCommand( noteName:String ):Boolean //判断noteName是否有对应的Command

public function removeCommand( noteName:String ):void //从Notice映射中移除注册的Command。首先移除观察者,再干掉command。

4 media包

是一些中介人,它们是核心层与外界通信的代理人,是框架的配件(mvc是主体),可增减。我们的工作就是给这些配件添加自定义属性和行为,来实现我们的需求。 4.1 Proxy类

包:patterns.media 类:public class Proxy 继承:Proxy?Notifier

实现:Proxy? IProxy, INotifier

Proxy是Model的助理,负责保存数据对象,存取数据,可发送通知。 4.1.1 属性

public static var NAME:String = 'Proxy'; //Proxy名称常量 protected var proxyName:String; // Proxy实例名称 protected var data:Object; //数据对象 4.1.2 方法

//=============== 访问Proxy =======================

//构造函数,保证

proxyName有值,不保证data

public function getProxyName():String //获取Proxy名称。在Model中,需要根据Proxy名称来获取Proxy实例

//=================== 访问数据对象 ================ public function setData( data:Object ):void //设定数据对象 public function getData():Object //读取数据对象

//================ 生死关头处理一下 ================== public function onAdd():void {} //创建Proxy时 public function onRemove( ):void {} //移除Proxy时 4.2 Mediator类

包:patterns. media

类:public class Mediator 继承:Mediator ?Notifier

实现:Mediator ?IMediator, INotifier

Mediator是View的助理,负责保存视图组件,操作具体的视图组件,处理通知。 4.2.1 属性

public static const NAME:String = 'Mediator'; //Mediator名称常量,通常,Mediator用于控制特定的一个或一组视图组件,不需要动态命名

protected var mediatorName:String; // Mediator实例名称 protected var viewComponent:Object; //保存视图组件 4.2.2 方法

//=============== 访问Mediator =======================

public function Mediator( mediatorName:String=null, viewComponent:Object=null ) //构造函数,保证mediatorName有值,不保证viewComponent。也就是说,可以不指定视图。

public function getMediatorName():String //获取mediator名称。在View中,需要根据mediator名称来获取mediator实例

//=================== 读写视图组件 ========================

public function setViewComponent( viewComponent:Object ):void //设定mediator要处理的视图组件

public function getViewComponent():Object //获取mediator要处理的视图组件 //==================== 处理Notice ===================== public function listNoticeInterests():Array //列出mediator关注的通知 public function handleNotice( notice:INotice ):void {} //收到通知进行处理 //===================== 生死瞬间处理一下 ================= public function onAdd( ):void {} //添加mediator实例时 public function onRemove( ):void {} //移除mediator实例时 4.3 Command类

包:patterns. media

类:public class Command 继承:Command ? Notifier

实现:Command ? ICommand, INotifier

Command是Controller的助理,负责执行单个业务逻辑处理通知。由用户动作触发一个通知,该通知由Command的execute方法来处理。

.1 属性 无 4.3.2 方法

public function execute( note:INotice ):void{} //应在子类中override该方法,添加自定义业务逻辑,处理通知。 4.4 Commands类

包:patterns. media

类:public class Commands 继承:Commands? Notifier

实现:Commands? ICommand, INotifier

Commands也是Controller的助理,负责执行一系列Command处理通知。维护一个Command列表subCmds。execute时,Commands会按顺序实例化subCmds中的Command,并调用其execute方法。 4.4.1 属性

private var subCmds:Array; //Command列表,是个FIFO表 4.4.2 方法

//=============== 创建Commands ==================

public function Commands() //在子类中,不必自定义构造函数,而是重写initializeMacroCommand方法,若想自定义构造函数,必须调用super

protected function initializeCmds():void{} //在子类中重写该方法,给Command列表添加Command。注意:Command可以是Command或Commands。

protected function addSubCmd( cmdRef:Class ): void //给Command列表添加Command //=============== 执行Commands =======================

public final function execute( note:INotification ) : void //执行Command列表中的所有Command,禁止override该方法

5 observer包

用于实现通知通信机制。不依赖Flash中的事件模型,而且AS3并没有内置的事件模型。采用观察者模式,实现模块之间的事件驱动通信。

Flash事件和PureMVC通知的主要差异是:事件遵循“责任链”模式,在显示层级中“冒泡”直到有父组件处理它;而通知遵循“发布/订阅”模式。使用通知进行通信,PureMVC各模块之间不需要建立父子关系。

通知并不是事件的替代物。一般情况下,Mediator给其视图组件添加事件侦听器,按常用方式处理,然后给目标Command广播Notice,或与其他Mediator通信。Proxy通过广播Notice,与Command实例和Mediator通信。 5.1 Observer类

包:patterns. observer 类:public class Observer 实现:Observer ? IObserver

Observer负责保存通知的处理者及其处理方法,收到通知则告知其处理者处理这个通知。 5.1.1 属性

private var processF:Function; //处理函数——负责处理通知

private var processO:Object; //处理者——负责调用处理通知的方法 5.1.2 方法

//构造函数,设定处理

者和处理函数

//================ 读写processFunc ============================ public function setProcessFunc( processFunc:Function ):void //设定处理函数 private function getProcessFunc():Function //获取处理函数

//======================== 操作处理者 ======================== public function setProcessor( processor:Object ):void //设定处理者 private function getProcessor():Object //获取处理者

public function notifyProcessor( notice:INotice ):void //通知notice的处理者 public function isProcessor( object:Object ):Boolean //判断object是不是处理者 5.2 Notifier类

包:patterns. observer 类:public class Notifier 实现:Notifier ? INotifier Notifier专门负责发送通知。 3.1.1 属性

protected var facade:Facade = Facade.getInstance(); //引用Fa?ade,这样可减轻实现过程中的代码负担,因为需要经常引用Facade 3.1.2 方法

public function sendNotice( noticeName:String, body:Object=null, type:String=null ):void //创建并发送通知 5.3 Notice类

包:patterns. observer 类:public class Notice 实现:Notice ? INotice

Notice负责保存通知的名称、类型、发送者,并提供读写通知的名称、类型、发送者的接口。 3.1.1 属性

private var name:String; //通知实例的名称 private var type:String; //通知实例的类型 private var sender:Object; //通知的发送者 3.1.2 方法

public function Notice( name:String, sender:Object=null, type:String=null ) //创建通知,必须指定通知名称,可不指定通知发送者、通知类型

public function getName():String //获取通知的名称,没有setter,只能通过构造函数设定通知的名称

//============ 读写通知的发送者 =============== public function setSender( sender:Object ):void public function getSender():Object

//========== 读写通知类型 ================== public function setType( type:String ):void public function getType():String

public function toString():String //把通知转化为字符串形式


PureMVC开发框架使用手册中文版(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:微机第三版教材习题参考答案 马维华

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: