功能解析:
1.相当于一个虚类,定义了几个常用方法
public function get handler():Function //获取函数处理器
public function get source():Object //获取观察对象
public function execute(method:Function, ... params:Array):Object //用反射技术执行method
protected function callHandler():void //调用函数处理器
protected function callHandlerWithArguments():void //调用带参数的函数处理器
代码说明:
package com.adobe.cairngorm.observer
{
//flex3引入这个包
CONFIG::Flex3
import mx.core.Application;
//flex4引入这个包
CONFIG::Flex4
import mx.core.FlexGlobals;
import mx.core.UIComponent;
public class Observer
{
//是否带参数的函数处理器
public var sendArgumentsToHandler:Boolean=false;
//如果存在函数处理器,则为真
protected var isHandlerInitialized:Boolean=false;
//如果存在观察对象,则为真
protected var isSourceInitialized:Boolean=false;
//获取函数处理器,函数处理器是通过属性设置,所以在父类中只能表示存在这个函数处理器,返回null
public function get handler():Function
{
return null;
}
//观察的对象是通过属性设置的,在这个父类中只能表示存在观察的对象,返回null
public function get source():Object
{
return null;
}
//定义了一个excute函数,通过反射技术运行method,method可以带参数
public function execute(method:Function, ... params:Array):Object
{
var returnValue:Object;
try
{
returnValue=method.apply(null, params);
}
catch (e:Error)
{
delay(e);
}
return returnValue;
}
//定义了一个callHandler函数,用于调用Handler函数处理器
protected function callHandler():void
{
try
{
callHandlerWithArguments();
}
catch (e:Error)
{
delay(e);
}
}
//定义了一个callHandlerWithArguments函数,用于调用带参数的Handler函数处理器
protected function callHandlerWithArguments():void
{
if (sendArgumentsToHandler)
{
handler.call(null, source);
}
else
{
handler.call();
}
}
//flex4的抛出异常
CONFIG::Flex4
protected function delay(e:Error):void
{
UIComponent(FlexGlobals.topLevelApplication).callLater(throwException, [e]);
}
//flex3的抛出异常
CONFIG::Flex3
protected function delay(e:Error):void
{
UIComponent(Application.application).callLater(throwException, [e]);
}
private function throwException(e:Error):void
{
throw e;
}
}
}
阅读(1131) | 评论(0) | 转发(0) |