消息总线——EventBus

在一个应用程序中,其各个模块之间经常要进行通信。而为了减少各个模块间的耦合度,常用的做法就是使用回调函数。而在java语言中,因为因为没有回调函数的概念,通常的做法就是采用观察者设计模式来实现回调。
观察着模式算是比较“完美”了,但是有没有更好的方法呢?

有个名人说过(我自己)——代码一定要优雅。

于是我发现了eventbus这个东西。

eventbus可以翻译为消息总线,它可以认为是消息订阅/发布的一种实现,它简洁而优雅的让消息的发送者和接收者实现了完全的解耦。


使用eventbus只需要四步。

第一步:
在项目中添加maven依赖

<dependency>
    <groupId>org.greenrobot</groupId>
    <artifactId>eventbus</artifactId>
    <version>3.0.0</version>
</dependency>

或者去官方网站下载eventbus的jar,大小只有50K左右。并将jar放到项目的依赖库中
eventbus的github地址:https://github.com/greenrobot/EventBus

第二步
定义一个Event类,就是pojo类

public  class  AEvent{
}

第三步:
在任何需要接收消息的地方,进行注册,并定义接收消息的方法;同时不需要接收消息时,要记得解除注册。

注册:

EventBus.getDefault().register(this);

解除注册:

EventBus.getDefault().unregister(this);

设定接收消息的类型:

@Subscribe
public void onEvent(AEvent event) {/* Do something */};

第四步:
在任何需要的地方发送消息

EventBus.getDefault().post(new  AEvent());

PS :本文中介绍的eventbus位于org.greenrobot下,此eventbus主要是针对android使用的,当然在非安卓环境下也可正常使用。在google的guava.jar中也可找到eventbus的实现,有兴趣的可以研究研究那个,那是一个略微复杂的eventbus。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值