1
我正在实现一个字节消息解串器,它将在调度器接口上调度反序列化的消息,并返回抛出的所有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
,和Observer
?
你是否会发现将'byte []'封装在一个可能名为'DeserializedMessage'或类似的类中的优点? –
不是,我会说这是一个缺点。如果我理解正确,你建议将解码步骤外包给一个方法,从'byte []'块生成'DeserializedMessage's。我宁愿留在现在使用dual/visitor编码(在调度器上调用onTypeOfMessage()),因为它解决了表达式问题所需的部分(类型安全的可扩展工具)。 –
YMMV,但我只是讨厌传递原始类型,因为总是看起来有些变化,而且你没有任何回旋余地。 –