12.1 初步了解事件 - 图1以手机有响铃事件举列:

  • 手机可以通过响铃事件来通知关注手机的人
  • 响铃事件让手机具备了通知关注者的能力
  • 从手机角度看:
    • 响铃要求关注者采取行动
    • 通知关注者的同时,把相关消息也发送给关注者
  • 从人的角度看:
    • 人得到手机的通知,可以采取行动了
    • 除了得到通知,还收到了事件主体者(手机)经由事件发送过来的消息 事件参数 EventArgs
  • 响应事件:关注者得到通知后,检查事件参数,依据其内容采取响应的行动
    • 处理事件具体所做的事情:事件处理器 Event Handler
    • 如果是会议提醒:就去准备会议
    • 如果是电话接入:选择是否接听
    • 如果关注者在开会,直接抛弃掉事件参数,不做处理

事件的功能 = 通知 + 可选的事件参数(即详细信息)

术语约定

下面五种说法都指事件的订阅者:
12.1 初步了解事件 - 图2
下面四种说法都指事件参数:
12.1 初步了解事件 - 图3

事件模式

事件模式本身也是一种设计模式。

事件模式有一些缺陷,例如牵扯到的元素比较多(5个),不加约束的话,程序逻辑很容易变得一团乱麻。

为了约束团队成员写代码时保持一致,把具有相同功能的代码写到固定的地方去,人们总结出一些最佳解决方案,逐渐形成了 MVC、MVP、MVVM 等程序架构模式。这些模式要求程序员在处理事件时有所为有所不为,代码该放到哪就放到哪,让程序更有条理。