“Subject.asObservable()”和主题本身“主题”之间的任何区别?

如果一个SubjectObservable继承,基于任何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是隐藏实现细节的防御机制,没有其他的东西。