一、什么是观察者模式?
定义: 当一个对象的状态发生改变时,所有依赖于它的订阅者都会收到通知。
通俗理解: 类似当你需要买报纸的时候,你不需要天天跑去报刊店去买,只需要你购买了月报,送报员就会每天报纸送到你家,相当于报纸是被观察者,你是观察者,及当有新报纸出来(对象状态改变),报刊员就会把报纸送到你手上(订阅者都会收到通知)
应用场景?
场景一:关联行为场景
场景二:事件多级触发场景
场景三:跨系统消息交互场景(例如:消息队列、事件总线)
Android开发:RxJava、Eventbus等等…即 需要监听某个对象的时候,并且该对象状态改变,外部需要去更新。
二、角色划分?
角色一: 抽象观察者
角色二: 具体观察者
角色三: 抽象被观察者
角色四: 具体被观察者
三、实现?
//角色一: 抽象观察者
public interface Observer {
void update(Observerable observerable);
}
// 角色二: 具体观察者
public class ConcreateObserverAimplements Observer {
@Override
public void update(Observerable observerable) {
Log.i("zqr", "A收到通知");
}
}
// 角色三: 抽象被观察者
public interface Observerable {
// 添加观察者
void addObserver(Observer observer);
// 撤销观察者
void removeObserver(Observer observer);
// 通知观察者改变
void notifyChange();
}
// 角色四: 具体观察者
public class ConcreateObserverAimplements Observer {
@Override
public void update(Observerable observerable) {
Log.i("zqr", "A收到通知");
}
}