如果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()
答案 0 :(得分:7)
如果你看一下.asObservable
的实现,你会看到它通过一个什么都不做的运算符来提升observable。这实际上只是将您的主题包装在一个可观察的对象中,这使得消费代码无法将其转换回主题。
asObservable
是一种隐藏实现细节的防御机制,而不是其他。