创建主题
Creating a Subject
我正在实现一个字节消息反序列化器,它将在调度程序接口上分派反序列化的消息和 return 抛出的所有 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
和 Observer
?
切换到 Subject-based API 可能不是最好的主意,因为您将潜在的冷 API 更改为强制性热 API。在您的原始设计中,Throwable
序列的消费者会假设在订阅时,Observable<byte[]>
也会被订阅。
否则,我有一个关于创建 Subject
的 blog series,但你无法避免使用它们的繁重工作。
我正在实现一个字节消息反序列化器,它将在调度程序接口上分派反序列化的消息和 return 抛出的所有 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
和 Observer
?
切换到 Subject-based API 可能不是最好的主意,因为您将潜在的冷 API 更改为强制性热 API。在您的原始设计中,Throwable
序列的消费者会假设在订阅时,Observable<byte[]>
也会被订阅。
否则,我有一个关于创建 Subject
的 blog series,但你无法避免使用它们的繁重工作。