通过查看源码,发现Observable 是一个空的接口, Subscribers 是一个实现了Observable 的抽象类,
public interface Observer<T> {}
public abstract class Subscriber<T> implements Observer<T>, Subscription {}
他们通过
mObservable.subscribe(mTestSubscriber);
产生联系, 而为什么是mObservable.subscribe(mTestSubscriber); 这种写法,而不应该是mTestSubscriber.subscribe(mObservable); 这种写法吗?
其实这里面就设计到了一个面向对象的问题了.之前我不是很理解,但是回忆起张孝祥老师讲的java视频,他就抛出一个这样的问题:
人把门打开和关闭,如果是代码的话,应该怎么写?
到底是人打开门,还是门打开人?
张老师说是后者,具体哪个对象拥有改变自身属性的方法,这个方法就应该在哪个对象上。这样的好处应该在并发环境下更明显。
比如一个电话,很多人抢着打。
class Phone{
public synchronized call(){}
}
当调用Phone.call()的时候,如果有人占用,电话是唯一的,其他人自然要等待。但如果要设计成person.callPhone()的时候,问题就没有这么好办了。
Observable事件源,被观察者。
Subcriblers 观察者,事件订阅者
Observer 同Subcribler差不多
subscribe() 方法,绑定Observable与Subcr

本文探讨了在Android中Observable和Subscriber的关系,强调了面向对象的设计原则。通过例子解释为何通常使用`mObservable.subscribe(mTestSubscriber)`而不是`mTestSubscriber.subscribe(mObservable)`。 Observable作为事件源,而Subscriber作为事件订阅者,当Observable发生变化时,会通知Subscriber执行相应的业务逻辑。在RxJava和RxAndroid中,Observable有多种创建方式,如create、just和from。文章还预告了对just和from方法关系的进一步讨论。
最低0.47元/天 解锁文章
1008





