EventBus

介绍

Guava提供了事件总线EventBus库,是一个基于事件的发布/订阅框架(观察者模式),通过解耦发布者和订阅者简化事件传递,可以用它在单进程中替代RabbitMQ来做事件分发。

Observer模式

Java把Observer放到了JDK里面:Observable和Observer,它简化了Observer模式的开发,至少不用再手工维护自己的Observer列表了。不过,JDK里的Observer从1.0就在那里了,直到Java 7,它都没有什么改变,就连通知的参数还是Object类型。目前很少会直接应用JDK中的ObserverGuavaEventBus也实现了Observer模式

关键点

  • 事件(Event):又可称为消息,用于订阅者和发布者之间的消息传递媒介。事件类型(EventType)一般是指一个消息对象。
  • 订阅者(Subscriber):订阅某种事件类型的对象。当有发布者发布这类事件后,EventBus 会执行订阅者的 onEvent 函数,这个函数叫事件响应函数。订阅者通过 register 接口订阅某个事件类型,unregister 接口退订。
  • 发布者(Publisher):发布某事件的对象,通过 post 接口发布事件。

流程图

eventbus img

参考

深入理解EventBus的设计思想

热评文章