美文网首页
设计模式—观察者

设计模式—观察者

作者: 君莫看 | 来源:发表于2018-01-23 18:46 被阅读0次

观察者UML

观察者UML,截自-大话设计模式

什么是观察者模式?

定义:一种一对多的依赖关系,让多个观察者对象同事监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。

观察者模式的例子,我们的身边有很多,比如用电热壶烧水,电热壶烧水这个事件就是一个主题对象subject,而当水壶里的烧开的时候会有发出提示音【这就是通知notify】;当水壶发出提示音时,可能张三要冲咖啡,李四要泡面,相当于张三、李四都订阅了水壶的提示音Attach;


电热壶烧水UML

一个简单的代理实现代码

public interface ObserverJava {
    void doSomethings();
}
public class LiSi implements ObserverJava {
    @Override
    public void doSomethings() {
        System.out.println("李四 泡面 !");
    }
}
public class ZhangSan implements ObserverJava {
    @Override
    public void doSomethings() {
        System.out.println("张三 冲茶 !");
    }
}
public class Kettle {
    private List<ObserverJava> observers = null;

    public Kettle() {
        observers = new ArrayList<>();
    }

    public void attach(ObserverJava observer) {
        if (!observers.contains(observer))
            observers.add(observer);
    }

    public void detach(ObserverJava observer) {
        if (observers.contains(observer))
            observers.remove(observer);
    }

    public void notifyAllObservers() {
        for (int i = 0; i < observers.size(); i++) {
            observers.get(i).doSomethings();
        }
    }

    static class Test {
        private static void main() {
            Kettle kettle = new Kettle();
            kettle.attach(new LiSi());
            kettle.attach(new ZhangSan());
            kettle.notify();
        }
    }
}

总结:观察者模式能把,观察主题和订阅者很好的解耦,当有新的订阅者添加进来也不会和观察主题发生直接关系。【所有的设计模式,都是为了更好的解耦而存在】

相关文章

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • RxJava设计模式与原理

    标准观察者设计模式 RxJava是一种特殊的观察者模式,首先我们先来看标准的观察者设计模式。在标准观察者模式中,存...

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • Guava源码分析——EventBus

    EventBus的设计理念是基于观察者模式的,可以参考设计模式(1)—观察者模式先来了解该设计模式。 1、程序示例...

  • Android LifeCycle 源码学习总结

    整体设计 Lifecycle的核心设计模式就是观察者模式。 LifeCycleOwner 是被观察者,Lifecy...

  • PHP设计模式之观察者模式

    PHP设计模式之观察者模式

  • 设计模式 - 观察者模式

    观察者模式的定义 观察者模式简述 MVC是由各种复杂的设计模式组合而成的复合结构,观察者是其中的设计模式之一。视图...

  • 面試小記

    1:设计模式 观察者模式observer observerble,subscribe (订阅) (1)观察者对象 ...

网友评论

      本文标题:设计模式—观察者

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