美文网首页
观察者模式

观察者模式

作者: MrWu_ | 来源:发表于2017-05-03 20:36 被阅读5次

出版者+订阅者=观察者模式

观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并通知更新。

主题和观察者定义了一对多的关系,观察者依赖于此主题,只要主题状态一有变化,观察者就会被通知。

设计原则:为了交互对象之间的松耦合设计而努力。

  • Subject:目标

  • ConcreteSubject:具体目标

  • Object:观察者

  • ConcreteObject:具体观察者


public interface Subject{

//这两个方法都需要一个观察者作为变量,该观察者是用来注册或被删除的

public void registerObserver(Observer o);

public void removeObject(Observer o);

//当主题状态改变时,这个方法会被调用,以通知所有的观察者

public void notifyObject(Observer o);

}

public interface Observer{

public void uddate(float temp,float humidity,float pressure);

}

public interface DiaplayElement{

public void display();

}

//在WeatherData中实现主题接口

public class WeatherData implements Subject{

private ArrayList observers;

private float temperature;

private float humidity;

private float pressure;

public WeatherData(){

observers=new ArrayList();l

}

//当注册观察者时,我们只要把它加到ArrayList的后面即可

public void registerObserver(Observer o){

observers.add(o);

}

public void removeObserver(Observer 0){

int i=observers.indexOf(o);

if(i>=0){

observers.remove(i);

}

}

public void notifyObservers(){

for(int i=0;i

相关文章

  • 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/mgjltxtx.html