美文网首页
观察者模式优化

观察者模式优化

作者: 齐步走一二一 | 来源:发表于2020-10-16 17:52 被阅读0次

观察者模式,只听别人讲不太容易理解,要自己深入,慢慢学习它的精妙之处!

调用

public void test(){
        Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(Emitter<String> emitter) {
                emitter.onNext("ddddd");
            }
        }).subscribeObserver(new Observer<String>() {
            @Override
            public void onNext(String o) {
                Log.e("chy", o);
            }

            @Override
            public void onSubscribe() {
                Log.e("chy", "onSubscribe");
            }

            @Override
            public void onError(Throwable throwable) {

            }

            @Override
            public void onComplete() {

            }
        });
    }

ObservableOnSubscribe.java接口类

public interface ObservableOnSubscribe<T> {
    void subscribe(Emitter<T> emitter);
}

被观察者ObservableSource.java

public interface ObservableSource {
    void subscribeObserver(Observer observer);
}

被观察者实现类Observable.java

public abstract class Observable implements ObservableSource {
    @Override
    public void subscribeObserver(Observer observer) {
        subscribeActual(observer);
    }

    protected abstract void subscribeActual(Observer observer);


    public static<T> Observable create(ObservableOnSubscribe<T> source){
        return new ObservableCreate<T>(source);
    }
}

被观察者子类ObservableCreate.java

public class ObservableCreate<T> extends Observable {
    public ObservableOnSubscribe source;

    public ObservableCreate(ObservableOnSubscribe<T> observableOnSubscribe){
        this.source = observableOnSubscribe;
    }

    @Override
    protected void subscribeActual(Observer observer) {
        observer.onSubscribe();

        CreateEmitter createEmitter = new CreateEmitter(observer);
        source.subscribe(createEmitter);
    }

    static final class CreateEmitter<T> implements Emitter<T>{

        Observer<T> observer;

        public CreateEmitter(Observer<T> observer){
            this.observer = observer;

        }
        @Override
        public void onNext(T t) {
            observer.onNext(t);
        }

        @Override
        public void onError(Throwable throwable) {
            observer.onError(throwable);
        }

        @Override
        public void onComplete() {
            observer.onComplete();
        }
    }
}

观察者Observer.java

public interface Observer<T> {
    void onNext(T t);
    void onSubscribe();
    void onError(Throwable throwable);
    void onComplete();
}

发射者Emitter.java

public interface Emitter<T> {
    void onNext(T t);
    void onError(Throwable throwable);
    void onComplete();
}

相关文章

  • 观察者模式优化

    观察者模式,只听别人讲不太容易理解,要自己深入,慢慢学习它的精妙之处! 调用 ObservableOnSubscr...

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

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

  • RxJava基础—观察者模式

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

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

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

  • RxJava 原理篇

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

  • 观察者模式

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

  • 设计模式-观察者模式

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

  • 观察者模式

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

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

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

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

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

网友评论

      本文标题:观察者模式优化

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