觀察者模式在軟件設計中是一個很常見的設計模式,經過addListener和change通知事件來進行多個對象之間的聯動,尤爲是在有UI設計元素的Andriod端最爲常見java
這裏重點經過RxJava來談一下,RxJava把觀察者模式中幾個對象作了一下封裝以實現:設計模式
生活中得栗子:微信
一個網紅主播(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);