使用Flash Event System还是构建自己的观察者设计模式?

时间:2010-12-20 15:09:50

标签: flash actionscript-3

在这本食谱中,有人主张建立自己的观察者设计模式: http://cookbooks.adobe.com/post_Using_Observer_Pattern_instead_of_Events-18232.html

性能真的更快吗?

3 个答案:

答案 0 :(得分:3)

该文章的作者并未声称其性能更快。

相反,它是一种替代架构。使用内置事件系统,您可以订阅发布者以获取事件。在本文中,有一个单独的“数据总线”聚合您订阅的事件。

最终,它解决了一个不同的问题,IMO。该文章中的ObserverManager发送可由系统中的任何对象拾取的事件。它非常适合“播放电影”,“暂停电影”,“导航到链接”等活动,任何人都可以发布它,任何人都可以订阅它。它松散耦合。有点像CB收音机。

另一方面,Flex / Flash中的事件模式更为贴心。例如,模型对象上的属性已更改,并且UI想要显示它。事件将对象转换为对象。它更紧密耦合 - 对象需要相互引用。有点像电话(或者,因为它是单向的,也可能是电报?)

答案 1 :(得分:2)

是调度Event很慢,如果您的目标是性能,您可以选择自己的事件系统,或者如果您不想重新发明轮子,请查看Robert Penner的as3 signals library

答案 2 :(得分:0)

嗨,我认为可以优化作者的代码 喜欢 public function unsubscribe(observer:IObserver):void {

       var index:int=indexof(observerData);
       if(index>0)
       {
             observerData.splice(index,1);

        }

}