观察者模式--CustomEventBus项目
观察者模式:定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
使用场景:
1.某些时候需要一些对象有所关联,而且这种关联是可以拆分而不是组合在一起的。
2.某一事件发生,需要向多方触发。
3.消息交换,如消息队列、事件总线的处理机制。
1.某些时候需要一些对象有所关联,而且这种关联是可以拆分而不是组合在一起的。
2.某一事件发生,需要向多方触发。
3.消息交换,如消息队列、事件总线的处理机制。
观察者模式主要角色:
- Subject:抽象主题,被观察者(Observable)的抽象,管理着众多观察者的实现,可以实现添加或删除观察者的功能。
- ConcreteSubject:具体主题,被观察者(Observable)的实现,通过该实现来向观察者发送通知。
- Observer:抽象观察者(Observer),观察者的抽象。一般是接口,实现该接口生成各种各样的观察者。
- ConcreteObserver:具体观察者,抽象观察者的具体实现,当被观察者发生变化时执行具体逻辑
1.定义抽象的被观察者IEventBus.java
2.具体的被观察者CustomEventBus.java
3.抽象的观察者接口
接口为View.OnClickListener()
4.具体的观察者CustomBusActivity.java
优点:
1.解耦,被观察者只知道观察者列表「抽象接口」,被观察者不知道具体的观察者
2.被观察者发送通知,所有注册的观察者都会收到信息「可以实现广播机制」