美文网首页
02 观察者模式

02 观察者模式

作者: RealityVibe | 来源:发表于2019-04-19 16:53 被阅读0次

基于util包的观察者模式demo

import java.util.Observable;
import java.util.Observer;
/**
 * @author by yze on 2019/4/19
 * @see
 * @since
 */
public class ObserverTest {
    static class WeatherData extends Observable {
        private int arg1;
        private int arg2;

        public WeatherData(int arg1, int arg2) {
            this.arg1 = arg1;
            this.arg2 = arg2;
        }

        public void setMeasurements(int arg1, int arg2) {
            this.arg1 = arg1;
            this.arg2 = arg2;
            measureDataChanged();
        }

        public void measureDataChanged() {
            setChanged();
            notifyObservers();
        }

        public int getArg1() {
            return arg1;
        }

        public void setArg1(int arg1) {
            this.arg1 = arg1;
        }

        public int getArg2() {
            return arg2;
        }

        public void setArg2(int arg2) {
            this.arg2 = arg2;
        }
    }


    static class Observer1 implements Observer {
        private Observable observable;

        public Observer1(Observable observable) {
            this.observable = observable;
            observable.addObserver(this);
        }

        @Override
        public void update(Observable obs, Object arg) {
            if (obs instanceof WeatherData) {
                System.out.println(((WeatherData) obs).getArg1() + " " + ((WeatherData) obs).getArg2());
            }
        }
    }


    static class Observer2 implements Observer {
        private Observable observable;

        public Observer2(Observable observable) {
            this.observable = observable;
            observable.addObserver(this);
        }

        @Override
        public void update(Observable obs, Object arg) {
            if (obs instanceof WeatherData) {
                System.out.println("this is observer 2 :" + ((WeatherData) obs).getArg1() + " " + ((WeatherData) obs).getArg2());
            }
        }
    }

    public static void main(String[] args) {
        WeatherData weatherData = new WeatherData(1, 2);
        Observer1 observer1 = new Observer1(weatherData);
        Observer2 observer2 = new Observer2(weatherData);
        weatherData.setMeasurements(3, 4);
    }
}

相关文章

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

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

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

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

  • 30 天精通 RxJS (05) - 代码升级V6

    由于原贴02-04主要介绍的是函数式编程,观察者模式,迭代器模式。其相关的代码和RxJS版本关系不大。所以02-0...

  • RxJava基础—观察者模式

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

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

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

  • RxJava 原理篇

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

  • 观察者模式

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

  • 设计模式-观察者模式

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

  • 观察者模式

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

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

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

网友评论

      本文标题:02 观察者模式

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