上QQ阅读APP看书,第一时间看更新
第2章 事件
在计算机科学里,事件指的是系统内发生的某件事或变化,可以被某个程序接收并处理。它可以是用户输入导致的,例如按键、单击鼠标;可以是网络通信导致的,例如Web服务器接收到一个请求,邮件服务器收到一封邮件;也可以仅仅作为不同对象之间控制流程转移的一种手段,例如为程序自定义的事件。所有这些情况都被抽象出一套共同的机制,用于有效地处理事件参与者之间的互动。这个机制包含以下几个组成部分:事件的源/发布者、事件的收听者/订阅者/处理器以及收听者与发布者之间如何处理事件的协议,包括收听者用于处理事件的方法的签名、发布者传递给收听者的事件信息。事件机制在图形界面软件开发、网络编程等领域都有广泛的应用,围绕它进行的编程范式被称为事件驱动编程。
事件与编程中的许多其他概念既有联系也有区别,如控制反转(Inversion of control)、回调函数(Callback function)和观察者模式(Observer pattern)。把事件和它们放在一起讨论比较有助于更清楚地理解各自的内涵和用途。之后本章将重点分析Java、C#和JavaScript三种语言中事件编程的不同实现方式和特点,以更充分地揭示事件的本质,并且例示一个理念在不同语言中相映成趣的表现形式——这既能体现理念的一般性,又极好地展示了编程语言由于设计之差异在解决问题的方式和表现力上的多样性。