为什么使用自定义事件而不是直接方法调用?

Lyd*_*Lyd 9 apache-flex oop flash events actionscript-3

我是编程新手,我一直在检查很多游戏编码教程.我注意到,在大多数情况下,他们使用自定义事件来触发方法,而不是直接调用方法.

这种做法背后的原因是什么?为什么他们不只是调用方法?

例如:


我们有两个对象:AB.A有方法A.methodA()B需要时使用的X条件被触发.

为何实施:

B将事件调度到A告诉A运行A.methodA()

代替:

B 使用 A.methodA()

Bad*_*his 14

主要原因是利益分离.使用事件时,A类不需要知道B类的存在(反之亦然).

这样做的一些好处是:

  • 更简单的单元测试(您可以测试没有B类的A类)
  • 更改A类或B类时,更少破坏代码的可能性
  • 对代码中其他类的引用较少,这减少了内存泄漏的可能性
  • 更清洁的代码
  • 更灵活/可重用的代码(一堆其他类可以全部监听/响应事件,而无需在您的调度程序中添加任何其他代码)

  • +1; 我还要补充一点,事件是对象与其父对象通信的正确方法.方法调用或公共属性是父进程与其子进程通信的正确方式. (4认同)
  • @ www.Flextras.com - 同意,特别是如果儿童班用于不同的父类. (3认同)