观察者设计模式 分为观察者:Obsever 和 被观察者:Observerable
主要是被观察者变更内容 观察者获取
map操作符
//map操作符
public static void mapOpretor(){
Observable.just("Hello").map(new Function<String,String>() {
@Override
public String apply(String s) throws Exception {
return s.toLowerCase();
}
}).map(new Function<String, String>() {
@Override
public String apply(String s) throws Exception {
return s+"World";
}
}).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
System.out.println("接收的数据:"+s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
flatMap操作符
public static void flatMapOpretor(){
User user = new User();
user.username = "赵本山";
user.addresses = new ArrayList<>();
User.Address address = new User.Address();
address.street = "稻香村";
address.city = "铁岭市";
user.addresses.add(address);
Observable.just(user)
.flatMap(new Function<User, ObservableSource<User.Address>>() {
@Override
public ObservableSource<User.Address> apply(User user) throws Exception {
return Observable.fromIterable(user.addresses);
}
})
.subscribe(new Consumer<User.Address>() {
@Override
public void accept(User.Address address) throws Exception {
System.out.println("地址是:" + address.street);
}
});
}
filter操作符
Observable.just(1,8,20,3,50,44,66,99).filter(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) throws Exception {
return integer>8;
}
}).subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
System.out.println("next:"+integer);
}
});