松耦合的程序结构有很多好处,可以降低程序的复杂程度,提高灵活性(应对变化)。
Actionscript中,事件机制是达到松耦合的常用手段之一。
事件机制涉及到事件和事件监听器。
在定义事件和事件监听器的时候,Actionscript设置了可省略的默认参数。
事件:
Event(type:String, bubbles:Boolean = false, cancelable:Boolean = false)
事件监听器:
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false)
注意上面红色字体部分。
这样的默认值的设计有什么巧妙之处呢?
以UI组件为例:
假设程序中使用了UI组件。该组件内部能够发出事件MyEvent。MyEvent是按照上面的默认值来定义事件的。
再假设程序按照上面的默认值来定义事件监听器,监听UI组件发出的MyEvent事件。
能够监听得到吗?
不能!
这就是巧妙之处。
这种设计避免了事件“不经意”的外泄。
事件机制是非常灵活的。
灵活是有代价的:没有经过缜密的程序结构设计,这种“灵活”会成为错误的陷阱。
(不谨慎的事件传播会触发不应该的监听器做动作)