传统上,Java的进程内事件分发都是通过发布者和订阅者之间的显式注册实现的。
设计EventBus就是为了取代这种显示注册方式,使组件间有了更好的解耦。
EventBus不是通用型的发布-订阅实现,不适用于进程间通信。
如下,当多个监听类(须使用@Subscribe注解)都处在同一类事件总线(可根据业务需求设计不同的事件总线)中时,当其中某一个监听类post事件后,其他每一个监听类都会收到同样的事件通知。
// Class is typically registered by the container. class EventBusChangeRecorder { @Subscribe 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); }
当不同JVM之间需要使用事件通知时,可使用一个中间件来作转换,如使用数据库、IO写文件都可,如下:
相关推荐
Otto 是基于 Guava 的,增强的事件总线,强调 Android 支持。 Otto 是把应用分离成不同部分,但是仍然可以很好的进行通讯。Otto 是从 Guava forked 而来,但是添加了许多独特的功能,而且精炼了事件总线。下载: ...
但这与Guava事件总线库并不完全相同。 geeteventbus简化了来自发布者和订阅者的事件处理。 发布者和订阅者不需要创建线程来同时处理事件。 eventbus可以是syncnus,其中事件是从发布事件的同一线程传递的可以按照...
Otto是Square公司为Android开发的事件总线库,它的设计灵感来源于Guava库的 EventBus。Otto同样提供了发布/订阅模型,但相比于EventBus,它的API更为简单。发布事件时,调用`Bus.post()`方法,订阅事件时,使用`@...
该项目是一款基于Google Guava和Spring AOP构建的Java事件总线组件源码,共包含47个文件,包括30个Java源文件、6个XML配置文件、2个YAML文件、2个批处理文件等。该组件支持同步和异步事件处理模式,采用注解式发布...
EventBus 是由 GreenRobot 开发的一个轻量级事件总线框架,它的设计灵感来源于 Google 的 Guava 事件总线。EventBus 的主要目标是简化应用程序中的组件间通信,避免过度依赖于复杂的跨组件回调或显式的 Intent 传递...
- **事件监听**:Guava 提供了 EventBus,一个简单的发布/订阅事件总线,方便组件间的通信。 - **时间处理**:Guava 提供了更加易用的时间处理 API,如 Duration 和 Period,弥补了 Java 标准库中对时间操作的不足...
Otto事件总线是由Square公司开发的一个轻量级的事件总线库,它基于Google的Guava库中的EventBus,旨在简化Android应用中的组件间通信。在这个“otto事件总线两个类之间的传参”示例中,我们将深入探讨如何利用Otto...
EventBus是一个简单的发布/订阅事件总线,可以帮助解耦组件间的通信,使得组件之间的交互变得简单而灵活。 10. **枚举集(EnumSet)** Guava的EnumSet是针对枚举类型的高效集合实现,比使用标准的Set实现有更好的...
EventBus 是 Guava 中的一个轻量级事件总线,用于组件间的解耦通信。订阅者可以注册对特定事件的兴趣,当事件发生时,会被通知。 通过学习 Google Guava 官方教程,开发者能够更有效地利用这些工具,提高代码质量...
8. **事件监听**:Guava的EventBus是一种发布-订阅事件总线,用于组件之间的松耦合通信,可以替代传统的监听器模式。 9. ** Predicates和Conditions**:Guava提供了预定义和自定义的谓词(Predicate)和条件...
Guava是Google公司开发的一款适用于Java的工具类集合。
在Java编程领域,事件总线(Event Bus)是一种设计模式,用于解耦应用程序的不同组件,使得它们可以通过发布和订阅事件来进行通信,而无需直接依赖彼此。Avis是一个基于Java实现的多播事件总线,它提供了高效、灵活...
9. **事件系统**:Guava的 EventBus 是一个简单的发布/订阅事件总线,可以帮助模块之间的解耦,让组件之间可以通过事件进行通信。 10. **随机数生成**:Guava提供了更强大的Randomness源,如Randomness类,以及基于...
Guava还包含了一些其他实用功能,如事件总线(EventBus)用于解耦组件间的通信,RangeSet用于处理有序值的集合,Optional类用于表示可能为空的值,避免空指针异常。 总的来说,Google Guava库是一个功能强大的Java...
8. **事件监听**:EventBus是Guava提供的轻量级事件总线,用于组件间的松耦合通信,使得模块间可以通过发布和订阅事件来交换信息。 9. **函数式编程**:Guava提供了函数接口,如Function、Predicate、Transformer等...
本资料主要围绕Guava中的两个关键特性进行探讨:函数式接口及其在Guava中的应用,以及Guava的EventBus事件总线机制的源码分析和使用经验。 首先,我们来了解一下Guava中的函数式接口。函数式接口是指只有一个抽象...
当我在寻找一个 API 类似于 Guava 的事件总线时,我很惊讶我找不到任何足够快的用于低延迟应用程序(例如 HFT)的事件总线。 所以我决定自己做。 我见过的所有实现的主要缺点是它们都使用反射来调用侦听器方法,即...
EventBus是一个发布/订阅事件总线,灵感来自于Guava的 EventBus 和 Otto。它的主要优点是解耦组件,避免了传统回调方法导致的复杂性。下面将详细讲解EventBus的基本概念、使用方法和优势。 1. **基本概念**: - **...
4. **事件总线**:Guava的 EventBus 是一个轻量级的事件总线实现,可以方便地在不同组件之间传递事件,如在设置页面更改时通知其他部分进行相应的更新。 5. **预处理和验证**:Guava的Preconditions类提供了检查...
7. **事件总线**:EventBus是Guava的一个轻量级事件发布/订阅系统,可以用于组件之间的解耦通信。 8. **流(Stream)**:虽然Java 8引入了Stream API,但Guava早在之前就提供了FluentIterable,提供类似的功能,允许...