RxJava学习总结(一)
最近在学习RxJava,笔主是上学期听说过RxJava,但是一直没有去了解,最近感觉谈论RxJava的人越来越多,我就迫不及待的想看一下到底有什么特别的地方
首先甩两个大牛写的RxJava分析
大头鬼Bruce:http://blog.csdn.net/lzyzsd/article/details/41833541
扔物线:http://gank.io/post/560e15be2dca930e00da1083
在看了两个大牛的博客的基础上,自己做一些总结
RxJava的定义:RxJava 在 GitHub 主页上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。
然而,对于初学者来说,这太难看懂了。因为它是一个『总结』,而初学者更需要一个『引言』。其实, RxJava 的本质可以压缩为异步这一个词。说到根上,它就是一个实现异步操作的库,而别的定语都是基于这之上的,同时我也觉得Rxjava是基于数据流的。
其实,RxJava是基于观察者模式扩展而来的,那么,观察者模式又是什么呢。
观察者模式:观察者模式分为被观察者(Observable)和观察者(Observer),首先,观察者会订阅(Subscrible)被观察者,当被观察者状态发生改变的时候,会通知观察者采取相应的措施。
举个例子(Java代码实现):
抽象被观察者:
public interface Observable {
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObserver(String str);
}
具体被观察者:
public class DetailObservable implements Observable{
private List observers = new ArrayList<>();
@Override
public void addObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObserver(String str) {
for(Observer observer:observers){
observer.update(str);
}
}
}
抽象观察者:
public interface Observer {
void update(String str);
}
具体观察者:
public class DetailObserver implements Observer{
@Override
public void update(String str) {
Log.d(“message:”,str);
}
}
主方法:
public class Main {
public static void main(String[] arg0){
Observable observable = new DetailObservable();
Observer observer1 = new DetailObserver();
Observer observer2 = new DetailObserver();
Observer observer3 = new DetailObserver();
observable.addObserver(observer1);
observable.addObserver(observer2);
observable.addObserver(observer3);
observable.notifyObserver(“accept”);
}
}
下一章会介绍RxJava的一些用法。