全球事件调度员

dav*_*vid 1 apache-flex air events design-patterns actionscript-3

使用Global Event Dispatcher会有什么不利之处,如下所述:http://www.riaspace.com/2010/11/unframework-so-how-to-getaway-without-any-framework/ 注意,我只是在小(ish)应用程序上工作.

// eventDispatcher.as script file

package 
{
    import flash.events.IEventDispatcher;

    public function get eventDispatcher():IEventDispatcher
    {
        return _eventDispatcher;
    }
}

import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;

var _eventDispatcher:IEventDispatcher = new EventDispatcher();
Run Code Online (Sandbox Code Playgroud)
public class MyViewPM
{
    public function btn_clickHandler():void
    {
        eventDispatcher.dispatchEvent(new MyEvent(MyEvent.EVENT_TYPE));
    }
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*man 5

如果您正在处理较小的项目并且您自己,那么全球调度员可能会很好,可以为您节省一些时间.

问题在于更大的应用程序和几个开发人员在相同的代码库上工作.我的经验是(经验不足)开发人员会迅速滥用全局事件系统并在其上发送事件,这些事件应该是本地事件(主要是查看事件).这使得代码难以理解,测试和修改,因为您几乎无法控制谁发送以及谁监听某些事件.与全局状态一样,数据可以同时在不同的地方进行修改,这可能导致调试噩梦.

如果您对增强型全局调度员感兴趣,请查看AS3Commons EventBus.