在java项目中使用EventBus的优缺点
在java项目中,如果不是swing,当要用到事件、通知机制的时,时下最流利的、最简单的方式就是使用
google的guava-EventBus,它简洁、强大、使用方便,最大多数开源爱好者的首选。
使用EventBus的好处有:
1.EventBus简洁、强大
2.不用写回调接口
3.可以组件、线程间的相互通信
但是,它也有缺点。比如,事件的处理(侦听)是通过方法的参数类型来确定的。当在项目中,当大量使用EventBus时,跟踪和定位问题,是一件很痛苦的事。我们知道,事件的三要素有:事件源、事件状态、事件处理者。即当某个事件源的某个状态发生变化时,事件的处理者侦听到了,会做出相应的处理。而EventBus的注册事件,仅通过EventBus.register()来注册。当一个事件有N个侦听者时,EventBus.register()会分布在项目的N个角落,而且当有N种事件时,这种情况就变得更加恐怖了。当定位问题,无法确定一个事件会有多少个侦听者,因为,你无法知道项目中有多少个register(),并且有多少个方法的参数与post()的参数的类型一致。
相比之下,javascript和actionscript的事件处理,就友好得多了。如: btn.addEventListener(MouseEvent.CLICK,onClickHandler);这一行代码,就能表达事件的三要素。事件源是btn,事件状态是click,事件的处理者是onClickHandler函数。非常好定位问题。即使通过javascript和actionscript来实现google的EventBus这种全局事件,也可以通过事件状态来快速定位,事件侦听者是谁、有几个事件侦听者。
个人感觉,google的EventBus更适合用在android项目中,特别是在Activity间的通信。传统项目似乎还是大不好,还是通过回调接口,或观察者模式来实现。因为更直观、更好跟踪和定位问题。
上一篇: 盘点历史上那些伟大的皇帝,仁德且很有远见
下一篇: zookeeper思维导图-知识点总结
推荐阅读
-
深入浅解正则表达式在Java中的使用
-
this在Java中的必须使用和不推荐使用的情况
-
eclipse Java web项目数据库由oracle更改为mysql中遇到的问题(使用JPA注解)附上修改过程
-
iOS开发中,block与代理的对比,双方的优缺点及在什么样的环境下,优先使用哪一种更为合适?
-
使用Java EE 在eclipse 开发动态的Web工程(Java web项目)
-
所谓的网页爬虫用java代码来实现,此代码适合在maven项目中使用中使用,因为,代码中的类所对应的依赖可以让maven下载。
-
在java项目中使用EventBus的优缺点
-
在java项目中使用EventBus的优缺点
-
FusionCharts在Java中的基本使用
-
FusionCharts在Java中的基本使用(1)