【EventBus】发布-订阅模式 ( EventBus 组成模块 | 观察者模式 )

简介: 【EventBus】发布-订阅模式 ( EventBus 组成模块 | 观察者模式 )

文章目录

一、发布-订阅模式

二、EventBus 组成模块

三、观察者模式





一、发布-订阅模式


发布订阅模式 :


发布者 Publisher : 状态改变时 , 向 消息中心 发送事件 ;

订阅者 Subscriber : 到 消息中心 订阅自己关心的事件 ;

消息中心 : 负责维护一个 消息队列 , 根据 消息类型 将 消息 转发给 对应的 订阅者 ;

image.png





二、EventBus 组成模块


EventBus 中有以下几个组成部分 :


Publisher 发布者 : 调用 post 方法发布事件 ;

EventBus 事件总线 : 该模块接收 发布者发布的事件 , 将事件转发给对应的 Subscriber 订阅者 ;

Subscriber 订阅者 : 使用 @Subscriber 注解修饰 , 接收发布的事件 , 并处理事件 ;

Event 事件 : 自定义类型 , 通过不同的事件类型 , 确定事件应该发送给哪个订阅者 ;

image.png


EventBus 是 发布 - 订阅 模式 的事件总线框架 , 事件的 发布者 与 订阅者 实现了解耦 , 简化了 Android 中各个组件之间的通信 ;






三、观察者模式


观察者模式中 , 目标对象 ( Subject / 被观察者 ) 中 , 维护了多个 观察者 , 观察者需要注册到 目标对象 中 , 如果目标对象发生改变 , 通知所有的观察者 , 观察者对象 收到通知后 , 进行相关处理 ;

image.png



上述结构中 , 观察者 与 目标对象 ( 被观察者 ) 是有 耦合性 的 ;


发布 - 订阅 模式 中 , 发布者 和 订阅者 是完全解耦的 ;


发布 - 订阅 模式 比 观察者模式 多了一个消息中心 , 这个 消息中心 是 发布者 和 订阅者 之间解耦的关键 ;


目录
相关文章
|
设计模式 存储 前端开发
Java设计模式-观察者模式(订阅发布模式)
Java设计模式-观察者模式(订阅发布模式)
319 0
Java设计模式-观察者模式(订阅发布模式)
|
JavaScript
vue全局事件总线和消息订阅详细讲解
vue全局事件总线和消息订阅详细讲解
vue全局事件总线和消息订阅详细讲解
EventBus实现组件间异步
最近新换了工作,刚来比较轻松,所以想自己写几个小工具提升下自己的效率。在开发过程中发现组件的一些通讯问题,如果采用异步的方式,效率能得到很大提升,所以决定使用到EventBus(消息总线)技术,达到异步事件处理的目的。
【EventBus】EventBus 源码解析 ( 取消订阅 )
【EventBus】EventBus 源码解析 ( 取消订阅 )
134 0
|
缓存
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
111 0
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
|
Android开发
【EventBus】EventBus 事件总线框架简介 ( EventBus 使用流程 )
【EventBus】EventBus 事件总线框架简介 ( EventBus 使用流程 )
251 0
|
消息中间件 调度
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
129 0
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
|
缓存 安全
【EventBus】EventBus 源码解析 ( 注册订阅者 | 注册订阅方法详细过程 )
【EventBus】EventBus 源码解析 ( 注册订阅者 | 注册订阅方法详细过程 )
97 0
|
缓存
【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )
【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )
95 0
【EventBus】EventBus 源码解析 ( 事件发送 | postToSubscription 方法 | EventBus 线程模式处理细节 )
【EventBus】EventBus 源码解析 ( 事件发送 | postToSubscription 方法 | EventBus 线程模式处理细节 )
110 0