介绍
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 接口发布事件。