介绍
Guava提供了事件总线EventBus库,是一个基于事件的发布/订阅框架(观察者模式),通过解耦发布者和订阅者简化事件传递,可以用它在单进程中替代RabbitMQ来做事件分发。
Observer模式
Java把Observer放到了JDK里面:Observable和Observer,它简化了Observer模式的开发,至少不用再手工维护自己的Observer列表了。不过,JDK里的Observer从1.0就在那里了,直到Java 7,它都没有什么改变,就连通知的参数还是Object类型。目前很少会直接应用JDK中的Observer,Guava的EventBus也实现了Observer模式
关键点
- 事件(Event):又可称为消息,用于订阅者和发布者之间的消息传递媒介。事件类型(EventType)一般是指一个消息对象。
- 订阅者(Subscriber):订阅某种事件类型的对象。当有发布者发布这类事件后,EventBus会执行订阅者的onEvent函数,这个函数叫事件响应函数。订阅者通过register接口订阅某个事件类型,unregister接口退订。
- 发布者(Publisher):发布某事件的对象,通过 post 接口发布事件。
流程图
