Google EventBus 使用详解
来源:互联网 发布:弯矩计算软件 编辑:程序博客网 时间:2024/06/06 06:48
EventBus是Google.Guava提供的消息发布-订阅类库,它实现了观察者设计模式,消息通知负责人通过EventBus去注册/注销观察者,最后由消息通知负责人给观察者发布消息。
首先使用 maven 依赖:
- <!-- https:
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>19.0</version>
- </dependency>
示例代码:EventBusCenter.java
- package com.lance.google.event.bus;
-
- import com.google.common.eventbus.EventBus;
-
-
-
-
- public class EventBusCenter {
-
- private static EventBus eventBus = new EventBus();
-
- private EventBusCenter() {
-
- }
-
- public static EventBus getInstance() {
- return eventBus;
- }
-
- public static void register(Object obj) {
- eventBus.register(obj);
- }
-
- public static void unregister(Object obj) {
- eventBus.unregister(obj);
- }
-
- public static void post(Object obj) {
- eventBus.post(obj);
- }
-
-
- }
观察者一
- package com.lance.google.event.bus;
-
- import com.google.common.eventbus.Subscribe;
-
-
-
-
- public class DataObserver1 {
-
-
-
-
-
-
-
- @Subscribe
- public void func(String msg) {
- System.out.println("String msg: " + msg);
- }
-
- }
观察者二- package com.lance.google.event.bus;
-
- import com.google.common.eventbus.Subscribe;
-
-
-
-
- public class DataObserver2 {
-
-
-
-
- @Subscribe
- public void func(Integer msg) {
- System.out.println("Integer msg: " + msg);
- }
- }
代码测试Test.java
- package com.lance.google.event.bus;
-
-
-
-
- public class Test {
-
- public static void main(String[] args) throws InterruptedException {
-
- DataObserver1 observer1 = new DataObserver1();
- DataObserver2 observer2 = new DataObserver2();
-
- EventBusCenter.register(observer1);
- EventBusCenter.register(observer2);
-
- System.out.println("============ start ====================");
-
-
- EventBusCenter.post("post string method");
- EventBusCenter.post(123);
-
- System.out.println("============ after unregister ============");
-
- EventBusCenter.unregister(observer2);
- EventBusCenter.post("post string method");
- EventBusCenter.post(123);
-
- System.out.println("============ end =============");
- }
- }
输出结果:
- ============ start ====================
- String msg: post string method
- Integer msg: 123
- ============ after unregister ============
- String msg: post string method
- ============ end =============
看使用起来简单吧!