• 事件总线模式


    事件总线模式

    事件总线定义:事件总线是对发布-订阅模式的一种实现。它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。

    事件总线的处理流程:

     

    发布订阅模式主要有两个角色:

    • 发布方(Publisher):也称为被观察者,当状态改变时负责通知所有订阅者。
    • 订阅方(Subscriber):也称为观察者,订阅事件并对接收到的事件进行处理。

    发布订阅模式有两种实现方式:

    • 简单的实现方式:由Publisher维护一个订阅者列表,当状态改变时循环遍历列表通知订阅者。
    • 委托的实现方式:由Publisher定义事件委托,Subscriber实现委托。

    总的来说,发布订阅模式中有两个关键字,通知和更新。
    被观察者状态改变通知观察者做出相应更新。
    解决的是当对象改变时需要通知其他对象做出相应改变的问题。

    如果画一个图来表示这个流程的画,图形应该是这样的:

     

    Event Bus就相当于一个介于Publisher和Subscriber中间的桥梁。它隔离了Publlisher和Subscriber之间的直接依赖,接管了所有事件的发布和订阅逻辑,并负责事件的中转。分析一下,如果EventBus要接管所有事件的发布和订阅,那它则需要有一个容器来记录事件源和事件处理。那又如何触发呢?有了事件源,我们就自然能找到绑定的事件处理逻辑,通过反射触发

    EventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish/Subsribe),或称作观察者设计模式

     

     

    1.事件总线维护一个事件源与事件处理的映射字典;

    2.通过单例模式,确保事件总线的唯一入口;

    3.利用反射完成事件源与事件处理的初始化绑定;

    4.提供统一的事件注册、取消注册和触发接口。

  • 相关阅读:
    .NetTiers不支持UDT的解决方式
    CreateRemoteThread的问题
    使用.NetTiers的事务
    how do i using c# to obtain call stack on crash?
    使用C#为进程创建DUMP文件
    GTD软件
    c#调用c++的dll
    使用PowerDesigner生成数据库
    笨鸟学iOS开发(2)ApplicationSettings
    让IIS支持中文名
  • 原文地址:https://www.cnblogs.com/dk1203573488/p/9068374.html
Copyright © 2020-2023  润新知