事件总线模式

Posted Macsad

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件总线模式相关的知识,希望对你有一定的参考价值。

事件总线模式

事件总线定义:事件总线是对发布-订阅模式的一种实现。它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。

事件总线的处理流程:

 

 

发布订阅模式主要有两个角色:

  • 发布方(Publisher):也称为被观察者,当状态改变时负责通知所有订阅者。
  • 订阅方(Subscriber):也称为观察者,订阅事件并对接收到的事件进行处理。

发布订阅模式有两种实现方式:

  • 简单的实现方式:由Publisher维护一个订阅者列表,当状态改变时循环遍历列表通知订阅者。
  • 委托的实现方式:由Publisher定义事件委托,Subscriber实现委托。

总的来说,发布订阅模式中有两个关键字,通知和更新。
被观察者状态改变通知观察者做出相应更新。
解决的是当对象改变时需要通知其他对象做出相应改变的问题。

如果画一个图来表示这个流程的画,图形应该是这样的:

 

Event Bus就相当于一个介于Publisher和Subscriber中间的桥梁。它隔离了Publlisher和Subscriber之间的直接依赖,接管了所有事件的发布和订阅逻辑,并负责事件的中转。分析一下,如果EventBus要接管所有事件的发布和订阅,那它则需要有一个容器来记录事件源和事件处理。那又如何触发呢?有了事件源,我们就自然能找到绑定的事件处理逻辑,通过反射触发

EventBus是android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish/Subsribe),或称作观察者设计模式

 

 

 

1.事件总线维护一个事件源与事件处理的映射字典;

2.通过单例模式,确保事件总线的唯一入口;

3.利用反射完成事件源与事件处理的初始化绑定;

4.提供统一的事件注册、取消注册和触发接口。

以上是关于事件总线模式的主要内容,如果未能解决你的问题,请参考以下文章

EventBus 事件总线模式实例(发布/订阅事件)

事件总线模式——实例讲解

事件总线(Event Bus)

MASA Framework 事件总线 - 跨进程事件总线

c++事件总线模型

c++事件总线模型