在团队开发过程中, 代码的耦合是一件让人感到十分头大的事情, 会导致代码质量降低代码提交冲突等一系列的问题
原理
在传统的代码中类 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 对象的事件通知
很多其它參考
来源: http://www.bubuko.com/infodetail-2546277.html