【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



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


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


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


目录
相关文章
|
2月前
|
设计模式 消息中间件 安全
C# 一分钟浅谈:观察者模式与订阅发布模式
【10月更文挑战第11天】本文介绍了观察者模式和订阅发布模式,这两种设计模式主要用于实现对象间的解耦。观察者模式通过事件和委托实现一个对象状态改变时通知多个依赖对象;订阅发布模式则通过事件聚合器实现发布者与订阅者之间的解耦。文章详细探讨了这两种模式的实现方式、常见问题及避免方法,帮助开发者在实际项目中更好地应用这些模式,提升代码的可维护性和扩展性。
80 1
|
7月前
|
设计模式 JavaScript 前端开发
js设计模式-观察者模式与发布/订阅模式
观察者模式和发布/订阅模式是JavaScript中的两种设计模式,用于处理对象间的通信和事件处理。观察者模式中,一个主题对象状态改变会通知所有观察者。实现包括定义主题和观察者对象,以及在主题中添加、删除和通知观察者的功能。发布/订阅模式则引入事件管理器,允许发布者发布事件,订阅者通过订阅接收通知。
|
JavaScript
Vue(五)——全局事件总线, 消息订阅与发布 ,nextTick
使用事件总线: 接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。
203 0
Vue(五)——全局事件总线, 消息订阅与发布 ,nextTick
|
缓存
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
141 0
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
|
消息中间件 调度
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
161 0
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
|
前端开发
【React】归纳篇(九)组件间通信的3中方式之props与订阅发布机制 | subscribe | publish | 改写前面练习
【React】归纳篇(九)组件间通信的3中方式之props与订阅发布机制 | subscribe | publish | 改写前面练习
186 0
EventBus实现组件间异步
最近新换了工作,刚来比较轻松,所以想自己写几个小工具提升下自己的效率。在开发过程中发现组件的一些通讯问题,如果采用异步的方式,效率能得到很大提升,所以决定使用到EventBus(消息总线)技术,达到异步事件处理的目的。
【EventBus】EventBus 源码解析 ( 取消订阅 )
【EventBus】EventBus 源码解析 ( 取消订阅 )
171 0
|
缓存 安全
【EventBus】EventBus 源码解析 ( 注册订阅者 | 注册订阅方法详细过程 )
【EventBus】EventBus 源码解析 ( 注册订阅者 | 注册订阅方法详细过程 )
124 0
|
缓存
【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )
【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )
126 0