创建主题

时间:2016-01-20 18:27:06

标签: java rx-java subject reactivex subject-observer

我实现了一个字节消息反序列化器,它会在调度程序接口上调度反序列化消息并返回抛出的所有Throwable的可观察对象,以便客户端代码可以处理错误。

该方法原型的草图:

Observable<Throwable> dispatchDeserializedMessages(Observable<byte[]>, Dispatcher)

现在截至最近,我熟悉Subject<T, R>,它非常适合这里,例如。

Subject<byte[], Throwable> dispatchDeserializedMessages(Dispatcher)

但是没有像create()这样的便捷方法可以轻松地委托给观察者和观察者。所有具体实现都将TR统一起来,因此我无法使用其中任何一种。

所以我的具体问题:有没有办法可以实例化一个合适的Subject<byte[], Throwable>代表ObserverObservable?有没有其他方法可以创建这样的Subject而不必实现(在必须手动委派每个实现的方法的意义上)整个SubjectObservable和{{ 1}}?

1 个答案:

答案 0 :(得分:2)

切换到基于主题的API可能不是最好的主意,因为您将可能冷的API更改为强制性热API。在您的原始设计中,Throwable序列的使用者会在订阅时假设,Observable<byte[]>也会订阅。

否则,我有一个关于创建Subject的{​​{3}},但你不能避免与他们一起繁重。