美文网首页
观察者模式

观察者模式

作者: aidlFor | 来源:发表于2018-07-11 15:34 被阅读0次

观察者模式是对象与对象的一对多的依赖关系,数据源改变的时候,所有的监控对象得到通知并刷新。

通俗的理解模式中就两个东西,一个是观察者Observer,一个是被观察者Observerable。

在代码层面上理解呢,就四个东西,抽象被观察者接口Observerable和他的具体实现我们做个以天气预报为例的例子,那么这个具体实现就可以叫做WeatherServer,WeatherServer是被观察者的具体实现也是要改变的数据源,通俗的讲就是气象站。

//被观察者,相当于天气站的接口抽象
public interface Observerable {

public void registerObserver(Observer o);

public void removeObserver(Observer o);

public void notifyObserver();
}

上述是抽象接口的简单表述,接下来看具体实现

public class WeatherServer implements Observerable {

private List<Observer> list;

private  String msg;

public WeatherServer() {
    list = new ArrayList<Observer>();
}

@Override
public void registerObserver(Observer o) {
    list.add(o);
}

@Override
public void removeObserver(Observer o) {
    list.remove(o);
}


@Override
public void notifyObserver() {

    for(Observer o:list){

        o.update(msg);
    }
}

public void setInfomation(String s) {
    this.msg = s;
    System.out.println("天气更新消息: " + s);
    //消息更新,通知所有观察者
    notifyObserver();
}
}

另外两个是抽象观察者接口Observer,和具体的实现这个接口的观察者对象,这里举个例子,比如有两个人预定了天气预报服务,那么这个Observer的具体实现就是AidlUser和QranUser,这里我是举例子,名字可以随便起。这样的话需求就是天气预报有更新则会通知AidlUser和QranUser天气变化。

//相当于接收观察者抽象
public interface Observer {
public void update(String msg);
}

然后是具体用户的实现

public class AidlUser implements Observer {

@Override
public void update(String msg) {

    System.out.print("亲爱的AidlUser,今天的天气是:"+msg);

}
}

最后来发布一下天气情况

public class Test {

public static void main(String[] args)
{
    Observer aidl = new AidlUser();

    Observer qran = new QranUser();

    WeatherServer server = new WeatherServer();

    server.registerObserver(aidl);

    server.registerObserver(qran);

    server.setInfomation("天气晴朗~");


}

}

相关文章

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

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

  • RxJava基础—观察者模式

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

  • 前端面试考点之手写系列

    1、观察者模式 观察者模式(基于发布订阅模式) 有观察者,也有被观察者。 观察者需要放到被观察者列表中,被观察者的...

  • RxJava 原理篇

    一、框架思想 观察者模式观察者自下而上注入被观察者被观察者自上而下发射事件观察者模式 装饰器模式自上而下,被观察者...

  • 观察者模式

    观察者模式概念 观察者模式是对象的行为模式,又叫作发布-订阅(publish/subscrible)模式。 观察者...

  • 设计模式-观察者模式

    观察者模式介绍 观察者模式定义 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为...

  • 观察者模式

    观察者模式 观察者模式的定义 观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/s...

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

    观察者模式 1、什么是观察者模式 观察者模式有时又被称为发布(publish)-订阅(Subscribe)模式、模...

  • 观察者模式和发布订阅模式区别

    观察者模式 所谓观察者模式,其实就是为了实现松耦合(loosely coupled)。 在观察者模式中,观察者需要...

  • RxJava(二)

    一、观察者模式 1.1、传统的观察者模式 1.2、RxJava 的观察者模式 区别传统的观察者模式是一个 Obse...

网友评论

      本文标题:观察者模式

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