觀察者模式在實際生活中的舉慄

觀察者模式在軟件設計中是一個很常見的設計模式,經過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);
相關文章
相關標籤/搜索