基于事件系统的概念

显式调用

  • 传统上,在组件提供例程和函数集合的系统中,例如面向对象的系统,组件通常通过显式调用这些例程来彼此交互。

显式调用的特点

  • 调用者必须知道被调用者的类名、构造方法(包括参数)与要调用的方法(包括参数)

事件系统使用隐式调用
基于事件系统的定义

  • 基于事件的系统是这样一种系统,其中不直接调用过程(即间接调用或隐式调用)。

什么是程序?

  • 过程是程序设计语言中的一个模块,有无参数。
  • 它由过程调用执行。结果将分配给调用参数,或修改此子例程中的global变量。

事件广播**与处理**机制

  • 广播机制
  • 注册机制
  • 系统调用
  • 事件发布者可能不负责调用

显式调用与隐式调用的区别
image.png
例子:
集成开发环境,如IDE

事件处理策略

怎样将事件发送到已经注册了的组件中呢

  • 有独立事件调度模块的系统
  • 无中心事件调度模块的系统

事件**调度**模块的责任

  • 接收事件
  • 分发事件

    策略1:有独立事件调度模块的系统

    image.png
    调度**模块以两种方式**分发事件

  • 调度员可以向系统中的所有模块广播事件

  • 调度器只向注册了该事件的模块发送事件:发布/订阅策略

    策略2:无独立事件调度模块的系统

image.png
这个模型通常被称为观察者/观察者

  • 每个模块都允许其它模块对其所发送的事件感兴趣
  • 只将事件发送给注册者

    一些概念

  • 观察者模式可以被用来设计与实现比较简单的事件系统

  • 观察者模式可以被认为是Observable/Observer 模型(无事件空间;事件空间由Observables产生)
  • 也可认为是Publish/Subscribe模型(无事件空间;事件空间Observable产生,Observable又承担 “调度员”的角色)