guava笔记四:EventBus简介

guava笔记四:EventBus简介

EventBus是什么

EventBus 是用来实现发布component之间的通信而且不需要明确的注册。然而,guava的EventBus并非是用来代替事件发布订阅的library,也不是为了进程之间的交互。

Example
//Class is typical registered by the container.
class EventBusChangeRecorder{
    @Subscriber public void recordCustomerChange(ChangeEvent e){
        recordChange(e.getChange());
    }
}

// somewhere during initialization
eventBus.register(new EventBusChangeRecorder());
// much later
public void changeCustomer(){
    ChangeEvent event = getChangeEvent();
    eventBus.post(event)
}
快速介绍

For Listener

监听一个自定义事件:

  • 传统方式。实现一个事件的接口。比如说CustomerChangeEventListener.
  • 使用EventBus。创建一个接受CustomerChangeEvent作为参数的方法,并且使用@Subscribe标识.

注册监听的方法:

  • 传统方式: 把object传给每个生产者registerCustomerChangeEventListener方法.这些方法很少定义于公共的接口中, 需要知道每个额外的生产者,也须知道它的类型.

  • 使用EventBus:使用EventBus.register(object)方法进行注册。你只需要保证每个生产者都享有一个EventBus.

监听一个更通用的对象类型:
* 传统方式: 不简单。
* 使用EventBus:event自动调度父类的监听器,允许监听object的监听类型和通配符监听器。

监听没有调度的监听器:
* 传统方式:增加代码到事件发布方法(或许使用AOP)
* 使用EventBus:订阅DeadEvent.这个EventBus将会告诉你任何发布的事件,但是不会分发.

对于生产者

track 事件监听器

  • 传统方式: 写代码来管理这些监听器,包括同步,或者使用EventListenerList
  • 使用EventBus:EventBus会自己做到这些.

发布事件给监听器

  • 传统方式: 通过创建方法去发布,包括错误隔离和异步。
  • 使用EventBus: 使用EventBus.post(Object)方法

术语
NameDescription
Event发布事件
Subscribing注册监听器,所以可以接受到事件并处理
Listener用来接收事件,并且需要暴露出handler方法
Handler method一个公共的方法,用来分发时间。需要使用@Subsrcibe标识
Posting an event发布事件给监听器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值