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

Observer模式是比较常用的设计模式之一,虽然有时候在具体代码里,它不一定叫这个名字,比如改头换面叫个Listener,但模式就是这个模式。手工实现一个Observer也不是多复杂的一件事,只是因为这个设计模式实在太常用了,Java就把它放到了JDK里面:Observable和Observer,从JDK 1.0里,它们就一直在那里。从某种程度上说,它简化了Observer模式的开发,至少我们不用再手工维护自己的Observer列表了。不过,如前所述,JDK里的Observer从1.0就在那里了,直到Java 7,它都没有什么改变,就连通知的参数还是Object类型。要知道,Java 5就已经泛型了。Java 5是一次大规模的语法调整,许多程序库从那开始重新设计了API,使其更简洁易用。当然,那些不做应对的程序库,多半也就过时了。这也就是这里要讨论知识更新的原因所在。今天,对于普通的应用,如果要使用Observer模式该如何做呢?答案是Guava的EventBus。

EventBus基本用法:

使用Guava之后, 如果要订阅消息, 就不用再继承指定的接口, 只需要在指定的方法上加上@Subscribe注解即可。代码如下:

消息封装类:

public classTestEvent {private final intmessage;public TestEvent(intme

java eventbus_Guava学习笔记:EventBus相关推荐

  1. Java NIO 学习笔记(三)----Selector

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

  2. 可能是最全面的 Java G1学习笔记

    转载自 可能是最全面的 Java G1学习笔记 引子 最近遇到很多朋友过来咨询G1调优的问题,我自己去年有专门学过一次G1,但是当时只是看了个皮毛,因此自己也有不少问题.总体来讲,对于G1我有几个疑惑 ...

  3. 深入浅出 Java CMS 学习笔记

    转载自  深入浅出 Java CMS 学习笔记 引子 带着问题去学习一个东西,才会有目标感,我先把一直以来自己对CMS的一些疑惑罗列了下,希望这篇学习笔记能解决掉这些疑惑,希望也能对你有所帮助. 1. ...

  4. Java NIO学习笔记之图解ByteBuffer

    转载自 Java NIO学习笔记之图解ByteBuffer ByteBuffer前前后后看过好几次了,实际使用也用了一些,总觉得条理不够清晰. <程序员的思维修炼>一本书讲过,主动学习,要 ...

  5. 转载:mongoDB java驱动学习笔记

    http://www.blogjava.net/watchzerg/archive/2012/09/22/388346.html mongoDB java驱动学习笔记 指定新mongo实例: Mong ...

  6. 2019年Java Web学习笔记目录

    Java Web学习笔记目录 1.Java Web学习笔记01:动态网站初体验 2.Java Web学习笔记02:在Intellij里创建Web项目 3.Java Web学习笔记03:JSP元素 4. ...

  7. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  8. Java 虚拟机学习笔记 | 类加载过程和对象的创建流程

    前言 创建对象是 Java 语言绕不开的话题,那么对象是如何创建出来的呢?我们今天就来聊一聊.对象创建第一步就是检查类是否加载,而类的加载又牵扯到类的加载过程.如果单说对象的创建而绕开类的加载过程,感 ...

  9. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

最新文章

  1. iter迭代器的应用
  2. 安装 express4 linux,nodejs+express4.0+mongodb安装方法 for Linux, Mac
  3. Docker 安装MySQL以及外部访问
  4. mybatis基本增删改查、缓存,延迟加载以及别名的配置
  5. java动态加载jar文件并执行方法
  6. 运行报错error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
  7. mysql 远程服务器返回错误404_远程服务器返回异常: (404) 未找到
  8. zabbix 3.0 监控windows 部署
  9. E - Tautology(永真式)
  10. 微信小程序跳转视频号直播
  11. 15种微信小程序运营推广方法
  12. linux基础-mkdir touch cp
  13. iPhone中国移动收不到彩信,设置方法?
  14. 微软Windows 11官方超高清4K壁纸提前放出,免费下载
  15. USB - DFU(dfuse\stm32)、fastboot、dfu-util
  16. Sketch-based image retrieval and shape matching代码运行(Matconvnet配置)
  17. 压力传感器的四个初始误差
  18. 日常计算机网络英语对话,日常话题英语口语
  19. MySQL(一) -----启动与关闭
  20. 饥荒开服 - 腾讯云轻量服务器

热门文章

  1. 支付退款流程设计_如何设计订单系统?不妨看看这篇文章
  2. 感谢开源,让我的青春永不褪色!
  3. 史上最全面的python学生管理系统教程(二)
  4. 1094 谷歌的招聘
  5. BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸 动态规划
  6. 如何判断img加载完成?
  7. Linux自动巡检脚本
  8. 脾胃虚弱用什么中成药比较好?
  9. windows下安装mongodb时报错verify that you have sufficient privileges to start system services解决方法
  10. 【arduino】4位8段数码管的使用