事件總線框架-OTTO
阿新 • • 發佈:2018-04-01
代碼質量 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