Android 谈谈你对Observable 和 Subscribers 的理解

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 通过查看源码,发现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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值