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

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

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();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 还记得之前很火的一句鸡汤,生活不止有眼前的苟且,还有诗和远方。 但随之而来的是关于苟且和远方的辩论,甚至还衍生出了...
    小哥淘电影阅读 866评论 0 1
  • 返回主页设置模式设置字号 wish和hope用法归纳 2008-06-16 09:57 1.作动词“希望,愿望,单...
    小绿植物阅读 232评论 0 0
  • 曾忆莲池欢渡藕,邻家窗口过两秋。 盛夏蛙塘声满头,惊夜蛐声彻寂道。 红联爆竹春来到,金鸡一鸣山河笑。 也曾忆起春回...
    朝辞暮返行多远阅读 299评论 1 2
  • 小得时候,大人说小孩子不要说谎,因为说谎的人鼻子会长长。所以我们假装懂事,假装明白大人的世界。 大了的时候,爸爸妈...
    尘奕阅读 403评论 2 5