Rx = Observables +LiNQ +Schedulers
Rx模式的优点:
使用观察者模式,方便创建事件流和数据流
查询方式的操作符组合和变换数据流,订阅任何观察的数据流并执行操作,轻松实现并发。
Rx四个基本概念:Observable(可观察者,即被观察者),Observer(观察者),subscribe(订阅),事件。
配置
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'
}
观察者接口
public interface Watcher {
void update(String str);
}
观察者
public class ConcreteWatcher implements Watcher {
@Override
public void update(String str) {
System.out.println(str);
}
}
被观察者接口
public interface Watched {
void addWatcher(Watcher watcher);
void removerWatcher(Watcher watcher);
void notifyWatchers(String string);
}
被观察者
public class ConcreteWatched implements Watched{
private List<Watcher> list = new ArrayList<>();
@Override
public void addWatcher(Watcher watcher) {
list.add(watcher);
}
@Override
public void removerWatcher(Watcher watcher) {
list.remove(watcher);
}
@Override
public void notifyWatchers(String string) {
for (Watcher watcher : list) {
watcher.update(string);
}
}
}
测试类
public class Test {
public static void main(String[] args){
Watched watched = new ConcreteWatched();
Watcher watcher = new ConcreteWatcher();
Watcher watcher2 = new ConcreteWatcher();
Watcher watcher3 = new ConcreteWatcher();
watched.addWatcher(watcher);
watched.addWatcher(watcher2);
watched.addWatcher(watcher3);
watched.notifyWatchers("我要偷东西了~");
}
}
结果