推荐阅读:《设计模式之禅》
Observer Pattern
设计模式之观察者模式(发布订阅模式)
Demo github地址:【BuilderPattern】
一、定义
定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
二、优点与缺点
- 优点
- 观察者和被观察者之间抽象耦合
- 观察者和被观察者间建立了一套触发机制
- 缺点
- 可能影响开发效率
- 可能影响运行效率(一个观察者出现卡壳,会直接影响到整体流程的进行)
三、使用注意事项
- 注意广播链条的问题
- 异步处理问题
四、代码原型
1、抽象观察者
public interface Observer{
public void update();
}
2、抽象被观察者
public abstract class AbsObsevable{
public Vector<Observer> obsVector = new Vector<Observer>();
public void addObserver(Observer o){
this.obsVector.add(o);
}
public void removeObserver(Observer o){
this.obsVector.remove(o);
}
public void notifyObservers(){
for(Observer o:this.obsVector){
o.update();
}
}
}
3、具体被观察者
public class ConcreteObsevable extends AbsObsevable{
public void doCertainThing() {
super.notifyObservers();
}
}
4、具体观察者
public class ConcreteObserver implements Observer{
@override
public void update(){
Log.d(TAG , “do update”);
}
}
5、使用场景
public static void main(String[] args){
ConcreteObservable observable = new ConcreteObservable();
ConcreteObserver observer = new ConcreteObserver();
observable.addObserver(observer);
observable.doSomething();
}