美文网首页
2018-01-30设计模式-观察者模式

2018-01-30设计模式-观察者模式

作者: TheLittleSky | 来源:发表于2018-01-30 22:25 被阅读0次

Observer-提供了一种对象设计,让主题和观察者之间松耦合的对象行为模式。

在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知并自动更新。

设计原则:

1.为了交互对象之间的松耦合设计而努力


气象站设计:

public interface Subject { 

    public void registerObserver(Observer o);//观察者变量是用来注册的

    public void removeObserver(Observer o);//观察者变量是用来删除的

    public void notifyObserver();//主题变化时,调用这个方法通知所有的观察者

}

public interface Observer{

    //所有观察者必须实现update()方法,以实现观察者接口。

    public void update(float temp,....)

}

public interface DisplayElement{

    public void display();//可以用策略模式

}


public class WeatherData implements Subject{

    private ArrayList observers;

    private float temp;//...Subject需要开放的数据

    public WeatherData{//构造函数

        Observers = new 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 notifyObserver(){

        for(i=0;i<observers.size();i++){

            Observer observer = (observer )observers.get(i);

            observer .update(temp,....);

        }

    }

    public void setWeatherData(float temp,....){

        this.temp = temp;

        notifyObserver();//当数据变化时调用notify通知所有对象

    }

}


public class CurrentDisplay implement Observer,DisplayElement{

    private Subject weatherData;//声明主题的引用变量

    public CurrentDisplay (WeatherData  weatherData){

        this.weatherData = weatherData;

        weatherData.registerObserver(this);//本身实现了Observer,注册为观察者。

    }

    public void update(float temp){

        this.temp = temp;

        display();

    }

    public void display(){

        system.out.println("temp is"+temp);

    }

}

相关文章

  • 观察者设计模式

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

  • RxJava基础—观察者模式

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

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

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

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

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

  • RxJava设计模式与原理

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

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • Guava源码分析——EventBus

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

  • 设计模式之观察者模式

    设计模式之观察者模式 本篇是设计模式系列博客的第四篇,本篇主要学习设计模式中的第二个行为型模式---观察者模式。 ...

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

    PHP设计模式之观察者模式

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

网友评论

      本文标题:2018-01-30设计模式-观察者模式

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