观察者模式在软件设计中是一个很常见的设计模式,经过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);