事件机制

一、一个实例

假设你在你家客厅里玩游戏,口渴了,需要到厨房开一壶水,等水开了的时候,为了防止水熬干,你需要及时把火炉关掉。为了及时了解到水是否烧开,你有三种策略可以选择:

  1. 守在厨房内,等水烧开

这种策略显然是很愚蠢的,采取这种策略,在烧水的过程中你将不能做任何事情,效率极低。

  1. 呆在客厅玩游戏,每隔一两分钟跑到厨房看一次

这种策略,在计算机科学中称为轮询,即每隔一定的时间,监测一次。在这里,也是很不明智的,在玩游戏时需要不断的分心。

  1. 在水壶上安装一个报警器,当水开了的时候,发出警报

这种策略是最好的,既不耽误自己玩游戏,又能在水开了的时候使自己及时获得通知。这种策略在计算机中通过事件机制来实现。

img

二、事件机制的组成

通过上面的实例,我们可以抽象出一个事件机制有三个组成部分:

1.事件源:即事件的发送者,在上例中为水壶;

2.事件:事件源发出的一种信息或状态,比如上例的警报声,它代表着水开了;

3.事件侦听者:对事件作出反应的对象,比如上例中的你。在设计事件机制时一般把侦听者设计为一个函数,当事件发送时,调用此函数。比如上例中可以把倒水设计为侦听者。

img