【发布时间】:2015-11-10 11:23:02
【问题描述】:
是的,这听起来可能有点雄心勃勃,但这是我想要实现的目标:
我的班级拥有我的热门Observable,班级需要一些时间来正确准备它(在另一个地方创建它并获得参考),所以当另一个班级要求它时,引用可能仍然为空(导致空指针)。我想要实现的目标类似于 NullObject 模式:返回可以安全订阅的空 observable(而不是 null),并且当 Observable 被正确创建时开始发射项目。
解决它的一种方法是创建PublishSubject,它充当客户端类和 ObservableHolder 类之间的桥梁。 PublishSubject 引用总是返回给客户端,当Observable 准备好时,它只会将所有事件转发给主题。这是一个好的解决方案吗?还是可以做得更好?
@edit
我决定继续使用我的解决方案,我认为在课堂上包装它之后,它就已经足够好了。我赞成以下答案,但它与我的问题不匹配,因为它与rx-java 实现没有直接关系,但建议代理模式很有帮助。
【问题讨论】:
-
PublishSubject通常是实现此目的的简单方法。如果您想详细了解 observable 是如何准备的,也许我们也可以设计一个无主题的解决方案。 -
PublishSubject似乎是合理的。想到的另一种解决方案是让您的可观察准备方法返回Observable<Observable<T>>,但看起来不像带有主题的实现那么干净。
标签: android design-patterns rx-java null-object-pattern