“Subject.asObservable()”和主题本身“主题”之间的任何区别?
如果一个Subject
从Observable
继承,基于任何Subject
的下一个选项有什么区别,比如:
private val locationSubject: ReplaySubject<Location> = ReplaySubject.create<Location>()
1.将subject
本身作为Observable
返回
fun getLocations(): Observable<Location> = locationSubject
2.返回subject.asObservable()
。
fun getLocations(): Observable<Location> = locationSubject.asObservable()
如果你看一下.asObservable
的实现,你会看到它用一个什么都不做的操作符来提升observable。 这实际上只是将你的主题包装在一个可观察的事物中,这使得消费代码不可能把它转换回主题。
asObservable
是隐藏实现细节的防御机制,没有其他的东西。