在这本食谱中,有人主张建立自己的观察者设计模式: http://cookbooks.adobe.com/post_Using_Observer_Pattern_instead_of_Events-18232.html
性能真的更快吗?
答案 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);
}
}