Javaの设计模式之观察者模式

推荐阅读:《设计模式之禅》

Observer Pattern

设计模式之观察者模式(发布订阅模式)

Demo github地址:【BuilderPattern】

一、定义

定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。

二、优点与缺点
  • 优点
    • 观察者和被观察者之间抽象耦合
    • 观察者和被观察者间建立了一套触发机制
  • 缺点
    • 可能影响开发效率
    • 可能影响运行效率(一个观察者出现卡壳,会直接影响到整体流程的进行)
三、使用注意事项
  • 注意广播链条的问题
  • 异步处理问题
四、代码原型

1、抽象观察者

public interface Observer{
  public void update();
}

2、抽象被观察者

public abstract class AbsObsevable{
    public Vector obsVector = new Vector();
    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();
}

你可能感兴趣的:(Javaの设计模式之观察者模式)