zoukankan      html  css  js  c++  java
  • 事件总线框架-OTTO

    在团队开发过程中,代码的耦合是一件让人感到十分头大的事情,会导致代码质量降低、代码提交冲突等一系列的问题。

    原理

    在传统的代码中类A中调用类B的方法,往往须要先得到类B的实例,然后再调用类B的详细方法(比方在Activity页面中发起一次网络请求。随后在请求的回调函数中改动该页面的UI),如此一来类A和类B就耦合在了一起。

    OTTO则使用了事件总线机制来避免此类问题。即:类A须要产生并发出 一个“事件通知”, 假设B订阅了该“事件“,那么它将会接受到这个通知,并做出对应的操作。如此一来类A同类B之间就实现了解耦。

    以下以Android Studio为例,同大家分享怎样使用OTTO框架来降低代码中的耦合。

    加入引用

    Gradle的配置例如以下:

    dependencies {
        ...
        compile 'com.squareup:otto:+'
        ...
    }

    代码

    创建一个Bus对象

        Bus bus= new Bus()
    • 此处的Bus对象往往作为一个全局对象而存在。

    在类B中得到已经创建好的Bus对象并注冊

        ...
        getBusInstance().register(this)
        ...
    
        @Subscribe
        public void getUser(User user) {
               //do something
        }
    
    • @Subscribe 表示订阅事件,当包括着User对象的“事件通知”发送出来后。类B就会接收到该通知,并调用getUser方法。

    在类A中发送一个包括User对象的“事件通知”

        getBusInstance().post(new User());
    • 当上方代码被调用后,类A就会发送一个包括User对象的“事件通知”

    很多其它參考

    官网地址

  • 相关阅读:
    第三章 集合与排序 3-2 对表进行分组
    第三章 集合与排序 3-1 对表进行聚合排序
    第二章 基础查询 2-3 逻辑运算符
    第二章 基础查询 2-2 算术运算符和比较运算符
    第二章 基础查询 2-1 SQL语句基础
    第一章 数据库和SQL
    subprocess模块
    hashlib模块
    re
    ConfigParser模块
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8686231.html
Copyright © 2011-2022 走看看