我实现了一个字节消息反序列化器,它会在调度程序接口上调度反序列化消息并返回抛出的所有Throwable
的可观察对象,以便客户端代码可以处理错误。
该方法原型的草图:
Observable<Throwable> dispatchDeserializedMessages(Observable<byte[]>, Dispatcher)
现在截至最近,我熟悉Subject<T, R>
,它非常适合这里,例如。
Subject<byte[], Throwable> dispatchDeserializedMessages(Dispatcher)
但是没有像create()
这样的便捷方法可以轻松地委托给观察者和观察者。所有具体实现都将T
与R
统一起来,因此我无法使用其中任何一种。
所以我的具体问题:有没有办法可以实例化一个合适的Subject<byte[], Throwable>
代表Observer
和Observable
?有没有其他方法可以创建这样的Subject
而不必实现(在必须手动委派每个实现的方法的意义上)整个Subject
,Observable
和{{ 1}}?
答案 0 :(得分:2)
切换到基于主题的API可能不是最好的主意,因为您将可能冷的API更改为强制性热API。在您的原始设计中,Throwable
序列的使用者会在订阅时假设,Observable<byte[]>
也会订阅。
否则,我有一个关于创建Subject
的{{3}},但你不能避免与他们一起繁重。