【设计模式】事件总线模式

前言

事件总线模式(Event Bus Pattern)是发布/订阅模式的一种实现。它是一种集中式的事件处理机制,允许不同组件彼此通信,但又不相互依赖,实现松耦合。Grafana 开源项目的软件架构就采用了事件总线模式。

事件总线模式

事件总线模式包含如下组件:

  • Event:不同组件间传递的数据。可广泛地说,事件可以分为三类:Event,Command 和 Request。三者的区分可以参考 Grafana 设计文档(在 Grafana 中,Request 被称为 Query)
  • Bus:各通信组件向 Bus 注册消息处理函数、事件监听器
  • Publishers:调用 Bus 的 Dispatch(或 Post 等)方法,发送事件
  • Subscribers:需要订阅事件的组件,会定义相应处理函数、事件监听器,并注册到 Bus,等待事件发生、 Bus 回调

参考资料

[1] Typical EventBus Design Patterns

[2] Grafana 源码

原文地址:https://www.cnblogs.com/guangze/p/12550844.html

时间: 2024-08-22 05:51:34

【设计模式】事件总线模式的相关文章

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

上一篇博客我们讲解了事件总线模式的概念及其实现原理 ,我们在实际运用中,大多数是在Android开发中运用到事件总线模式,它实现了事件订阅者和事件发布者的解耦,让我们更加容易在actvity等组件间传递信息.这篇文章通过这个简单的实例,给大家说明EventBus实现的原理,一起来打造一个简单的事件总线框架.如果你明白了这个框架的设计原理,那么EventBus也就相差不大,两者比起来只是后者更加完善和高效. 由于是模仿EventBus写得,所以我也把这个"框架"称为EventBus,先来

事件总线模式

事件总线定义:事件总线是对发布-订阅模式的一种实现.它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的. 事件总线的处理流程: 发布订阅模式主要有两个角色: 发布方(Publisher):也称为被观察者,当状态改变时负责通知所有订阅者. 订阅方(Subscriber):也称为观察者,订阅事件并对接收到的事件进行处理. 发布订阅模式有两种实现方式: 简单的实现方式:由Publisher维护一个订阅者列表,当状态改变时循环遍历列表通知订阅者. 委托的实现

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

在我们公司经常用到总线,具体的总线是什么让我理解我也不清楚,但是在这几个月下来,我已经知道总线如何使用,现在加上示例讲解总线如何使用. 1. 首先我们的新建一个类,这个类其实是用于总线传递的模型 using System; namespace PurchaseDevices.Model.CommonModel{/// <summary>/// 事件传递参数/// </summary>/// <typeparam name="T"></typep

java设计模式--观察者模式和事件监听器模式

文章转载于:http://www.java2000.net/p9452 复习设计模式,看到observer观察者模式,说法是该模式和iterator迭代器模式类似已经被整合进jdk,但是jdk提供了两种接口: 一.java.util.Observer -- 观察者接口 对应: java.util.Observable --受查者根类 二.java.util.EventListener -- 事件监听/处理接口 对应: java.util.EventObject -- 事件(状态)对象根类 研究了

Java设计模式补充:回调模式、事件监听器模式、观察者模式(转)

一.回调函数 为什么首先会讲回调函数呢?因为这个是理解监听器.观察者模式的关键. 什么是回调函数 所谓的回调,用于回调的函数. 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数. 有这么一句通俗的定义:就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法. 举个例子: 这里有两个实体:回调抽象接口.回调者(即程序a) 回调接口(ICallBack ) public i

云计算设计模式(七)——事件获取模式

云计算设计模式(七)--事件获取模式 使用仅追加存储到记录完整一系列描述在一个域上取数据,而不是存储仅仅是当前的状态,从而使存储区可以被用来实现该域对象的动作事件.该图案可以通过避免需要同步的数据模型和商业领域中简化复杂的结构域的任务;提高性能,可扩展性和响应能力;提供交易数据的一致性;并保持完整的审计跟踪和记录,可能使补偿措施. 背景和问题 大多数应用程序使用数据,并在典型的方法是应用到通过更新它作为用户使用的数据保持数据的当前状态.例如,在传统的创建,读取,更新和删除(CRUD)模型的典型数

Android 开源项目android-open-project工具库解析之(二) 高版本向低版本兼容,多媒体相关,事件总线(订阅者模式),传感器,安全,插件化,文件

六.Android 高版本向低版本兼容 ActionBarSherlock 为Android所有版本提供统一的ActionBar,解决4.0以下ActionBar的适配问题 项目地址:https://github.com/JakeWharton/ActionBarSherlock Demo地址:https://play.google.com/store/apps/details?id=com.actionbarsherlock.sample.demos APP示例:太多了..现在连google都

Android事件总线(二)EventBus3.0源码解析

相关文章 Android事件总线(一)EventBus3.0用法全解析 前言 上一篇我们讲到了EventBus3.0的用法,这一篇我们来讲一下EventBus3.0的源码以及它的利与弊. 1.构造函数 当我们要调用EventBus的功能时,比如注册或者发送事件,总会调用EventBus.getDefault()来获取EventBus实例: public static EventBus getDefault() { if (defaultInstance == null) { synchroniz

Android事件总线分发库EventBus3.0的简单讲解与实践

Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦.反正能帮助我们快速开发,这个确实是个好东西,其实鸿洋大神已经对源码作了一个较全面的剖析了 Android EventBus源码解析 带你深入理解Ev