观察者模式在实际生活中的举栗

观察者模式在软件设计中是一个很常见的设计模式,经过addListener和change通知事件来进行多个对象之间的联动,尤为是在有UI设计元素的Andriod端最为常见java

这里重点经过RxJava来谈一下,RxJava把观察者模式中几个对象作了一下封装以实现:设计模式

  1. Observable,即被观察者
  2. Observer,即观察者
  3. Subscribe,即订阅,观察者经过订阅方法实现监听事件
  4. Event,即事件,被观察者发生某种变化时会触发某种事件:
    1. onComplete(),队列数据处理完成后触发
    2. onNext(param),处理队列中某个数据完成后触发
    3. onError(error),处理队列中某个数据时出错时触发

生活中得栗子:微信

一个网红主播(Observable)拥有3000万的脑残粉(ObServer/Subscriber),脑残粉关注(Subscribe)了网红主播。网络

所有行为执行完最后结束时主播会公开微信号和手机号ide

好,对应的代码就是这样spa

建立脑残粉:设计

Observer<String> observer = new Observer<String>() {
    @Override
    public void onNext(String s) {
        // 看到主播表演了!赶忙去干某些事!;
    }

    @Override
    public void onCompleted() {
        // 拿到主播的联系方式了,赶忙去分享给其余人!;
    }

    @Override
    public void onError(Throwable e) {
        // 断网了,卧槽!什么破网络;
    }
};

固然建立Observer和Subscribler在RxJava中实际上是差很少的,后者比前者多一些方法:code

Subscriber<String> subscriber = new Subscriber<String>() {
    @Override
    public void onNext(String s) {
        // 看到主播表演了!赶忙去干某些事!;
    }

    @Override
    public void onCompleted() {
        // 拿到主播的联系方式了,赶忙去分享给其余人!;
    }

    @Override
    public void onError(Throwable e) {
        // 断网了,卧槽!什么破网络;
    }
};

建立主播:server

Observable observable = Observable.create(new Observable.OnSubscribe<String>() {
    @Override
    public void call(Subscriber<? super String> subscriber) {
        subscriber.onNext("表演吃黄鳝");
        subscriber.onNext("表演吃香肠");
        subscriber.onNext("表演吃鲸!");
        subscriber.onCompleted();
    }
);

好,网红主播和脑残粉都建立完后,脑残粉怎么关注(订阅)网红呢?对象

observable.subscribe(observer);
// or
observable.subscribe(subscriber);
相关文章
相关标签/搜索