在工作中,我们有一个庞大的架构和使用事件,从它的一个部分到另一个发送数据。 我最近开始的personnal项目,我常常想用事件来控制我的对象的交互。
例如,我有一个搅拌机类播放声音的效果和我最初以为我应该接收事件来播放声音效果。 然后,我决定只让我的类的静态和呼叫
Mixer.playSfx(SoundEffect)
在我的课。 我有一吨重的像这样的,我最初的想象与活动的执行,然后我改变主意的例子,对自己说这是没有什么太复杂。
所以,当我应该用事件的一个项目? 在这种场合下的事件,对他人技术的一个严重的优势在哪里?
您通常使用事件通知有关的对象发生了一些动作或状态改变用户。 通过使用事件,则让不同订户的反应不同,并且通过从事件发生器的去耦所述订户(及其逻辑),该对象变得可重复使用的。
在你的调音台的例子,我不得不事件信号的开始和的声音效果的播放端。 如果我是在一个桌面应用程序中使用这个,我可以使用这些事件来启用/禁用控制的UI。
调用子程序和引发事件之间的差与做:规格,选举,基数和最终哪一侧,所述引发剂或接收器具有控制。
与呼叫,所述引发剂选调用接收例程,和引发剂指定的接收器。 这导致许多对一个基数 ,作为多个主叫用户可以选择调用相同的子程序。
随着另一方面活动,发起者提出,将通过选择接收该事件的程序来接收事件。 接收器指定将接收来自什么引发什么事件。 这就导致了一个一对多的基数作为一个事件源可以有多个接收者。
以电话或活动的决定,多数与发起方是否确定有接收器或接收器确定发起者做。
其简单性和可重用性之间进行权衡。 让我们的“发送电子邮件”过程中的比喻:
如果您知道收件人和他们有限的数量,你总是可以决定,其作为他们将在“收件人”列表,点击发送按钮一样简单。 它的那样简单那是什么,我们使用的大部分时间。 这是直接调用该函数。
然而,在邮件列表的情况下,你不事先知道有多少用户愿意订阅你的电子邮件。 在这种情况下,您可以创建一个邮件列表程序,其中用户可以订阅和邮件自动进入到所有的订阅用户。 这是事件建模。
现在,即使在两个以上的选项,电子邮件被发送给用户,你的时候,直接发送电子邮件时使用的邮件列表程序更好的判断。 应用相同的判断,希望你会得到你的答案:)
干杯,
阿吉特。