【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



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


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


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


目录
相关文章
|
1月前
|
设计模式 消息中间件 安全
C# 一分钟浅谈:观察者模式与订阅发布模式
【10月更文挑战第11天】本文介绍了观察者模式和订阅发布模式,这两种设计模式主要用于实现对象间的解耦。观察者模式通过事件和委托实现一个对象状态改变时通知多个依赖对象;订阅发布模式则通过事件聚合器实现发布者与订阅者之间的解耦。文章详细探讨了这两种模式的实现方式、常见问题及避免方法,帮助开发者在实际项目中更好地应用这些模式,提升代码的可维护性和扩展性。
58 1
|
设计模式 消息中间件 Java
SpringBoot事件监听机制及观察者/发布订阅模式详解
介绍观察者模式和发布订阅模式的区别。 SpringBoot快速入门事件监听。 什么是观察者模式? 观察者模式是经典行为型设计模式之一。 在GoF的《设计模式》中,观察者模式的定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。如果你觉得比较抽象,接下来这个例子应该会让你有所感觉:
|
缓存
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
136 0
【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
|
消息中间件 调度
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
153 0
【EventBus】发布-订阅模式 ( 使用代码实现发布-订阅模式 )
|
前端开发
【React】归纳篇(九)组件间通信的3中方式之props与订阅发布机制 | subscribe | publish | 改写前面练习
【React】归纳篇(九)组件间通信的3中方式之props与订阅发布机制 | subscribe | publish | 改写前面练习
181 0
EventBus实现组件间异步
最近新换了工作,刚来比较轻松,所以想自己写几个小工具提升下自己的效率。在开发过程中发现组件的一些通讯问题,如果采用异步的方式,效率能得到很大提升,所以决定使用到EventBus(消息总线)技术,达到异步事件处理的目的。
|
缓存 安全
【EventBus】EventBus 源码解析 ( 注册订阅者 | 注册订阅方法详细过程 )
【EventBus】EventBus 源码解析 ( 注册订阅者 | 注册订阅方法详细过程 )
121 0
|
缓存
【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )
【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )
121 0
【EventBus】EventBus 源码解析 ( 取消订阅 )
【EventBus】EventBus 源码解析 ( 取消订阅 )
164 0
|
Android开发
【EventBus】EventBus 事件总线框架简介 ( EventBus 使用流程 )
【EventBus】EventBus 事件总线框架简介 ( EventBus 使用流程 )
297 0