1. 程式人生 > >事件總線框架-OTTO

事件總線框架-OTTO

代碼質量 AC andro end gis popu vhd 一次 rod

在團隊開發過程中,代碼的耦合是一件讓人感到十分頭大的事情,會導致代碼質量降低、代碼提交沖突等一系列的問題。

原理

在傳統的代碼中類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對象的“事件通知”

很多其它參考

官網地址

事件總線框架-OTTO