Guava EventBus体验
来源:互联网 发布:windows策略管理 编辑:程序博客网 时间:2024/06/05 10:51
EventBus初体验
1. 简介
EventBus是Guava提供的总线事件库,可实现进程内发布订阅功能;EventBus自动把事件分发给事件超类的监听者,并且允许监听者声明监听接口类型和泛型的通配符类型;
EventBus涉及到的角色有:- 消息生产者- 消息监听者- 角色管理平台
2 EventBus主要接口
3. 代码demo
3.0 消息体
自定义一个消息类型Person,方便后续测试;
public class Person { private String name; private String address; private String sex; /** * 省略getter/setter方法 */}
3.1 角色管理平台
角色管理平台核心就是一个EventBus对象,并封装EventBus的主要接口对外提供。
public class EventBusManager { // 创建guava提供的EventBus对象 private static EventBus eventBus = new EventBus(); //————————单例模式———————— private EventBusManager() { } private static final class InstanceHolder { private static final EventBusManager INSTANCE = new EventBusManager(); } public static EventBusManager getInstance() { return InstanceHolder.INSTANCE; } /** * 注册监听者 * @param o */ public void register(Object o){ eventBus.register(o); } /** * 移除监听者 * @param o */ public void unregister(Object o) { eventBus.unregister(o); } /** * 消息发布接口 * @param o */ public void post(Object o) { eventBus.post(o); }}
3.2 消息监听者
监听者需要通过@Subscribe来声明消息处理方式,支持泛型。
public class Subscriber<T> { @Subscribe public void out(T t){ if (t instanceof MsgDTO) { MsgDTO dto = (MsgDTO) t; System.out.println(dto.getName()); return; } System.out.println(t.toString()); }}
3.3 消息生产者
生产者发布消息之前需要先将消息监听者绑定到EventBus,然后才能保证消息被正确监听。
public class Main { public static void main(String[] args) { MsgDTO msgDTO = new MsgDTO(); msgDTO.setName("测试消息体"); // 先绑定消息监听者 EventBusManager.getInstance().register(new Subscriber()); EventBusManager.getInstance().post(msgDTO); EventBusManager.getInstance().post(new Integer(12345645)); EventBusManager.getInstance().post("直接测试字符串"); EventBusManager.getInstance().post(1234); }}
3.4 测试结果
测试消息体12345645直接测试字符串1234
阅读全文
0 0
- Guava EventBus体验
- EventBus(Guava)
- Guava学习笔记:EventBus
- Guava学习笔记:EventBus
- Guava之eventbus
- Guava 之eventbus 二
- Guava 之eventbus 二
- Guava学习笔记:EventBus
- Guava学习笔记:EventBus
- guava EventBus 观察者模式
- Guava - EventBus(事件总线)
- Guava教程-EventBus
- Guava学习笔记:EventBus
- Java-类库-Guava-EventBus
- Guava学习笔记:EventBus
- EventBus(guava)
- Guava库学习:学习Guava EventBus(一)EventBus
- 观察者模式与Guava EventBus
- Android沉浸式(侵入式)标题栏(状态栏)Status(一)
- 【IPFS + 区块链 系列】 入门篇
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例
- 码农和程序员之间的5个关键差异
- 计组2-3章图表汇总
- Guava EventBus体验
- 049day(构造和析构函数的调用时机,递归例题(四则运算表达式求值)的学习)
- Android沉浸式(侵入式)标题栏(状态栏)Status(二)
- js运算符(是用来返回结果的)
- gradle-3.5.1-bin.zip下载
- 深入理解 Tomcat(一)源码环境搭建和 How Tomcat works 源码
- 解决临界区(互斥)的软件方法-Dekker算法和Peterson算法
- 创建Spring web项目
- 卷积神经网络(CNN)