在工作中,我们有一个庞大的框架,并使用事件将数据从一部分发送到另一部分.我最近开始了一个个人项目,我经常想用事件来控制我的对象的交互.
例如,我有一个播放声音效果的混音器类,我最初认为我应该接收事件来播放声音效果.然后我决定只让我的课静止并打电话
Mixer.playSfx(SoundEffect)
Run Code Online (Sandbox Code Playgroud)
在我的课堂上.我有很多这样的例子,我最初想到的是一个带有事件的实现,然后改变主意,对自己说这太复杂了.
那我什么时候应该在项目中使用事件?在什么情况下事件比其他技术有明显的优势?
Sen*_*mar 11
您通常使用事件来通知订阅者有关对象上发生的某些操作或状态更改的信息.通过使用事件,您可以让不同的订阅者做出不同的反应,并通过将订阅者(及其逻辑)与事件生成器分离,该对象变得可重用.
在你的混音器示例中,我会有事件发出声音效果播放的开始和结束信号.如果我在桌面应用程序中使用它,我可以使用这些事件来启用/禁用UI中的控件.
调用子例程和引发事件之间的区别与以下方面有关:规范,选举,基数,以及最终,发起方或接收方具有控制权。
使用Calls,发起方选择调用接收例程,并且发起方指定接收方。这导致多对一基数,因为许多调用者可能选择调用同一子例程。
另一方面,对于事件,启动器引发一个事件,该事件将被选择接收该事件的那些例程接收。接收方指定将从哪些发起方接收什么事件。然后,这导致一对多基数,因为一个事件源可以有许多接收者。
因此,有关呼叫或事件的决定主要与发起方确定接收方是接收方还是接收方确定发起方有关。
归档时间: |
|
查看次数: |
1685 次 |
最近记录: |