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

观察者设计模式

作者: 不服输的小蜗牛 | 来源:发表于2020-07-27 19:51 被阅读0次

1.什么是观察者设计模式:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
2.什么时候使用观察者设计模式:
一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。
3.观察者设计模式的优缺点:
优点:1、观察者和被观察者是抽象耦合的。 2、建立一套触发机制。
缺点:1、如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。 2、如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。 3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。
4.观察者设计模式的实现:

我们以订阅报纸为例:刚开始老王和老冯都订阅了报纸,然后第一天都收到了报纸,第二天老王感觉报纸没意思就退订了。第二天只有老冯收到了报纸信息

import java.util.ArrayList;
import java.util.List;

public class NewspaperSubject {
    private List<Observer> observerList = new ArrayList<>();
    private String news;

    public String getNews() {
        return news;
    }

    public void setNews(String news) {
        this.news = news;
        notifiAllObservers(news);
    }

    private void notifiAllObservers(String news) {
        for (int i = 0; i < observerList.size(); i++) {
            observerList.get(i).update(news);
        }
    }

    public void attach(Observer observer){
        observerList.add(observer);
    }

    public void deattach(Observer observer){
        observerList.remove(observer);
    }

}


public abstract class Observer {
    protected NewspaperSubject subject;
   public abstract void  update(String state);
}


public class WangObserver extends Observer {
    public WangObserver(NewspaperSubject subject) {
        this.subject = subject;
        subject.attach(this);
    }

    @Override
    public void update(String state) {
        System.out.println("老王收到的报纸信息:"+state);
    }
}


public class FengObserver extends Observer {
    public FengObserver(NewspaperSubject subject) {
        this.subject = subject;
        subject.attach(this);
    }

    @Override
    public void update(String state) {
        System.out.println("老冯收到的报纸信息:"+state);
    }
}


相关文章

  • 观察者设计模式

    每周学点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/bzdtrktx.html