美文网首页
观察者模式学习(一)

观察者模式学习(一)

作者: sindorina | 来源:发表于2019-05-07 22:21 被阅读0次

1.抽象主题(Subject)角色
抽象主题角色把所以观察者对象保存在一个集合(如ArrayList)里面,每个主题可以有任何数量的观察者,抽象主题提供一个接口,可以增加和移除观察者对象,抽象主题角色又叫抽象被观察者对象(Observable)角色
2.具体主题(ConcreteSubject)角色
将有关状态存入具体观察者对象, 在具体主题的内部状态改变时,给所以登记过的观察者发出通知.具体主题角色又叫具体被观察者(Concrete Observable)角色
3.抽象观察者(Observer)角色
为所有的具体观察者定义一个接口, 在得到主题的通知时改变自己, 这个接口就叫更新接口
4.具体观察者(ConcreteObserver)角色
存储与主题的的状态相协调的状态,具体观察者角色实现抽象观察者的更新接口, 以便使本身的状态与主题的状态相协调, 如果需要,具体观察者可以保持一个指向主题的引用

//创建Observable第一种方式
Observable observable2 = Observable.just("hello world!");
Observable observable3 = Observable.fromArray("java","Android","ios");
//observable2 ,observable3最终调用fromArray
//创建Observable第二种方式
 Observable observable = Observable.create(new ObservableOnSubscribe() {
            @Override
            public void subscribe(ObservableEmitter e) throws Exception {

            }
        });

Observer observer = new Observer() {
            @Override
            public void onSubscribe(Disposable d) {//d.dispose();可以取消订阅
                
            }

            @Override
            public void onNext(Object o) {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        };

        observable.subscribe(observer);

        //等同于observer里面的onNext
        observable.subscribe(new Consumer() {
            @Override
            public void accept(Object o) throws Exception {

            }
        });
        observable.subscribe(new Consumer() {//等同于observer里面的onNext()
            @Override
            public void accept(Object o) throws Exception {

            }
        }, new Consumer<Throwable>() {//等同于observer里面的onError()
            @Override
            public void accept(Throwable throwable) throws Exception {

            }
        }, new Action() {//等同于observer里面的onComplete()
            @Override
            public void run() throws Exception {

            }
        });

相关文章

  • Rxjava 初步学习使用

    一.原理学习 核心:观察者模式 观察者模式:A 对象(观察者)对 B 对象(被观察者)的某种变化高度敏感,需要在 ...

  • 31 Java设计模式系列-观察者模式

    观察者模式 观察者模式是非常常见的设计模式之一,写个笔记,记录一下我的学习过程和心得。 首先了解一些观察者模式的定...

  • 设计模式之观察者模式

    观察者模式 Rxjava中运用到了观察者模式,那什么是观察者模式呢,现在来学习一下。正所谓观察,就是看,细察事物的...

  • Java 理解观察者模式

    前言:最近在学习RxJava,RxJava在观察者模式的基础上做了扩展,本文带大家了解观察者模式 什么是观察者模式...

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

    前言:本文仅作为第一次学习设计模式的参考和笔记。初探观察者模式: 观察者模式:Observer Pattern 又...

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

    Java设计模式之观察者模式 一直想写一篇学习观察者模式的总结没有契机,今天学习阻塞队列的原理时候看到在实现生产者...

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

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

  • javascript观察者模式

    javascript观察者模式学习笔记 原文地址 首先是观察者模式代码 在观察着模式的运用当中。react组件间的...

  • 观察者模式

    简介 1.学习本篇博文,我们知道在什么场景下使用观察者模式。2.观察者模式的优缺点。3.观察者模式给我们在今后开发...

  • 设计模式之观察者模式

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

网友评论

      本文标题:观察者模式学习(一)

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