一、一个实例
假设你在你家客厅里玩游戏,口渴了,需要到厨房开一壶水,等水开了的时候,为了防止水熬干,你需要及时把火炉关掉。为了及时了解到水是否烧开,你有三种策略可以选择:
- 守在厨房内,等水烧开
这种策略显然是很愚蠢的,采取这种策略,在烧水的过程中你将不能做任何事情,效率极低。
- 呆在客厅玩游戏,每隔一两分钟跑到厨房看一次
这种策略,在计算机科学中称为轮询,即每隔一定的时间,监测一次。在这里,也是很不明智的,在玩游戏时需要不断的分心。
- 在水壶上安装一个报警器,当水开了的时候,发出警报
这种策略是最好的,既不耽误自己玩游戏,又能在水开了的时候使自己及时获得通知。这种策略在计算机中通过事件机制来实现。
二、事件机制的组成
通过上面的实例,我们可以抽象出一个事件机制有三个组成部分:
1.事件源:即事件的发送者,在上例中为水壶;
2.事件:事件源发出的一种信息或状态,比如上例的警报声,它代表着水开了;
3.事件侦听者:对事件作出反应的对象,比如上例中的你。在设计事件机制时一般把侦听者设计为一个函数,当事件发送时,调用此函数。比如上例中可以把倒水设计为侦听者。