常用Flex IOC框架比较分析
2009-10-09 00:00:00 来源:WEB开发网在这个例子应用中,LoginPM是事件源,LoginAction(从LoginHandler重命名而来)是事件处理器。
如下代码摘自LoginPM:
[Event( name="LOGIN", type="com.adobe.login.control.event.LoginEvent")]
[ManagedEvents("LOGIN")]
public class LoginPM extends EventDispatcher
{
...
public function login() : void
{
var event : LoginEvent = new LoginEvent( username, password );
dispatchEvent( event );
}
}
让LoginPM成为事件源需要三个要素:Event元数据标签、ManagedEvents元数据标签,以及EventDispatcher#dispatchEvent。三者当中,只有ManagedEvents是Parsley扩展而来。Event元数据仅为习惯做法,事件的实际派发工作是由dispatchEvent完成的。Parsley将通过ManagedEvents决定它要处理哪个事件,并将该事件委托给事件处理器。
如下代码摘自LoginAction(已经被配置为事件处理器):
public class LoginAction implements IResponder
{
[MessageHandler]
public function execute( event : LoginEvent ) : void
{
...
}
}
因为我为这个函数补充了MessageHandler元数据,Parsley将把这个对象/函数当做类型为LoginEvent的所有事件的监听器。
要让这些对象对Parsley可见,可在传入FlexContextBuilder的配置文件内声明这些对象,或在视图中使用Configure对象。
表现层模型的注入
和其他例子一样,我已将表现层模型的继承结构去除。相关原因请参看Spring ActionScript。
Parsley支持setter和constructor两种注入方法。像我在Spring ActionScript例子中提到的那样,我更倾向于使用constructor注入,因为它可以暴露出对象运作所需的全部依赖。如是是DashboardPM的配置:
更多精彩
赞助商链接