eventbus发布-订阅模式(eventbus组成模块|观察者模式)(代码片段)

韩曙亮 韩曙亮     2023-01-06     304

关键词:





一、发布-订阅模式



发布订阅模式 :

  • 发布者 Publisher : 状态改变时 , 向 消息中心 发送事件 ;
  • 订阅者 Subscriber :消息中心 订阅自己关心的事件 ;
  • 消息中心 : 负责维护一个 消息队列 , 根据 消息类型 将 消息 转发给 对应的 订阅者 ;





二、EventBus 组成模块



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

  • Publisher 发布者 : 调用 post 方法发布事件 ;
  • EventBus 事件总线 : 该模块接收 发布者发布的事件 , 将事件转发给对应的 Subscriber 订阅者 ;
  • Subscriber 订阅者 : 使用 @Subscriber 注解修饰 , 接收发布的事件 , 并处理事件 ;
  • Event 事件 : 自定义类型 , 通过不同的事件类型 , 确定事件应该发送给哪个订阅者 ;

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





三、观察者模式



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

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

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

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

eventbus发布-订阅模式(使用代码实现发布-订阅模式)(代码片段)

文章目录一、发布-订阅模式二、代码实现发布-订阅模式1、订阅者接口2、订阅者实现类3、发布者4、调度中心5、客户端一、发布-订阅模式发布订阅模式:发布者Publisher:状态改变时,向消息中心发送事件;订阅者Subscriber:到消息中心... 查看详情

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

    在我们公司经常用到总线,具体的总线是什么让我理解我也不清楚,但是在这几个月下来,我已经知道总线如何使用,现在加上示例讲解总线如何使用。1.首先我们的新建一个类,这个类其实是用于总线传递的... 查看详情

vue3eventbus订阅发布模式(代码片段)

Ⅰ.什么是eventBus?通俗的讲,就是在任意一个组件,想把消息(参数)->传递到任意一个组件,并执行一定逻辑。Ⅱ.vue3如何使用eventBusvue3中没有了,eventBus,所以我们要自己写,但是非常简单... 查看详情

guava源码学习eventbus

基于版本:Guava22.0Wiki:EventBus 0.EventBus简介提供了发布-订阅模型,可以方便的在EventBus上注册订阅者,发布者可以简单的将事件传递给EventBus,EventBus会自动将事件传递给相关联的订阅者。支持同步/异步模式。只能用于线程间... 查看详情

eventbus

EventBus用来完成组件间通信的一个框架它是一个发布者与订阅者的模式 简单实用分为三个步骤1.定义事件  2.注册订阅者,声明订阅者 在需要接收信息的地方注册订阅者 并且声明订阅者 用 @Subscribe(注意:... 查看详情

eventbus事件总线框架(发布者/订阅者模式,观察者模式)(代码片段)

...,广播方式。二、单例比较好的写法: privatestaticvolatileEventBusdefaultInstance; 构造函数应当是private,不应该是public1pub 查看详情

事件总线(eventbus)

事件总线(EventBus)知多少源码路径:Github-EventBus简书同步链接 1.引言 事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉。事件总线是对发布-订阅模式的一种实现。它是一种集中... 查看详情

vue中eventbus的实现原理

参考技术A1.概念EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式,称为发布订阅者模式。2.实现2.使用注:只不过在vue中已经替我们实现好了$emit,$on这些方法,所以直接用的时候去newVue()就可以了. 查看详情

eventbus3.0:入门使用及其使用完全解析(代码片段)

前言EventBus是greenrobot再Android平台发布的以订阅-发布模式为核心的开源库。EventBus翻译过来是事件总线意思。可以这样理解:一个个(event)发送到总线上,然后EventBus根据已注册的订阅者(subscribers)来匹配相应的事件,进而把事件... 查看详情

eventbus3.0使用与源码分析

EventBus简介EventBusisapublish/subscribeeventbusoptimizedforAndroid.EventBus是一个基于发布/订阅模式的事件总线。其模型图如下从图可知,EventBus分为四个角色,消息发布者、事件总线、事件、消息订阅者。消息发布者把Event(消息)post(发送)到... 查看详情

eventbus实现组件通信的原理(代码片段)

在理清原理之前,先要明白EventBus的使用场景和主要方法的调用,可以参考EventBus3.0的使用。Publish/Subscribe模式,就是发布订阅模式。点击在线查看EventBus.java源码。EventBus的核心思想就是把event和订阅者,对应存在... 查看详情

eventbus3.0使用与源码分析(代码片段)

EventBus简介EventBusisapublish/subscribeeventbusoptimizedforAndroid.EventBus是一个基于发布/订阅模式的事件总线。其模型图如下从图可知,EventBus分为四个角色,消息发布者、事件总线、事件、消息订阅者。消息发布者把Event(消息)post(... 查看详情

看eshoponcontainers学一个eventbus(代码片段)

最近在看微软eShopOnContainers项目,看到事件总线觉得不错,和大家分享一下看完此文你将获得什么?eShop中是如何设计事件总线的实现一个InMemory事件总线eShop中是没有InMemory实现的,这算是一个小小小的挑战发布订阅模式发布订... 查看详情

eventbus3.0使用与源码分析(代码片段)

EventBus简介EventBusisapublish/subscribeeventbusoptimizedforAndroid.EventBus是一个基于发布/订阅模式的事件总线。其模型图如下从图可知,EventBus分为四个角色,消息发布者、事件总线、事件、消息订阅者。消息发布者把Event(消息)post(... 查看详情

由浅入深了解eventbus:

原理EventBus的核心工作机制如下图在EventBus3.0架构图:EventBus类  在EventBus3.0框架的内部,核心类就是EventBus,订阅者的注册/订阅,解除注册,以及事件的分发全部在这个核心类中实现; 对于EventBus对象的创建,在框架内部... 查看详情

masaframework-eventbus设计(代码片段)

...#xff0c;又有了顺序执行逻辑的特性。一个小思考:如果EventBus的配置支持动态调整的话,是否业务的执行顺序也可以被动态排列组合?换句话说它或许可以为进程内工作流提供了一个可能性EventSourcing(事件溯源࿰... 查看详情

eventbus3.0源码学习threadmode

线程模式POSTING:该模式不需要线程切换,为默认模式。在post线程直接调用事件订阅函数。MAIN:若post线程是主线程,则与POSTING模式一样;否则,由mainThreadPoster进行处理,从主线程调用事件订阅函数。BACKGROUND:若post线程不是主... 查看详情

guava中eventbus分析(代码片段)

EventBus1.什么是EventBus总线(Bus)一般指计算机各种功能部件之间传送信息的公共通信干线,而EventBus则是事件源(publisher)向订阅方(subscriber)发送订阅事件的总线,它解耦了观察者模式中订阅方和事件源之间的强依赖关系。图片... 查看详情