美文网首页
Javaの设计模式之观察者模式

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

作者: 耑意儿 | 来源:发表于2018-09-28 09:00 被阅读10次

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

    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();
    }
    

    相关文章

      网友评论

          本文标题:Javaの设计模式之观察者模式

          本文链接:https://www.haomeiwen.com/subject/goluoftx.html