guava之eventbus

1,EventBus 简介:
EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。
2,EventBus Demo:

package org.example.guava.eventbus;

import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;

public class EventBusTest {
    public static void main(String[] args) {
        //创建一个eventBus 对象,myEventBus 是EventBus 对象的Id
        EventBus eventBus = new EventBus("myEventBus");
        //向eventBus 中注册监听者
        eventBus.register(new EventListener());
        //使用eventBus 发布一个事件,该事件会通知给所有注册的监听者。通知给Event 类型参数的监听方法
        eventBus.post(new Event("hello every Listener, this is a eventMessage"));
    }
}

/**
 * 事件类,监听者监听的事件的包装对象
 */
class Event {
    private String message;

    public Event(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    @Override
    public String toString() {
        return "Event{" +
                "message='" + message + '\'' +
                '}';
    }
}

/**
 * 事件监听者类
 */
class EventListener {
    /**
     * 监听者的监听方法,必须加上 @Subscribe 注解,且只能有一个参数。实际触发一个事件的时候会根据方法参数类型触发对应的方法。
     *
     * @param event 事件对象
     */
    @Subscribe
    public void lisen(Event event) {
        System.out.println("lisen 接收到消息:" + event);
    }

    @Subscribe
    public void listen1(String event) {
        System.out.println("lisen1 接收到消息:" + event);
    }
}

3,使用总结
1)EventBus 发布一个事件,会通知给所监听者方法参数为事件参数类型的方法。
2)监听者有继承关系的,继承到的父类的监听方法,也会被通知到。
3)发布的事件对象的类型,也会通知到监听了其父类参数类型的监听方法。而发布的事件对象类型是父类,则不能通知到监听了其子类的监听方法。这个要注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值