所以我使用RxJava创建了一个事件总线,它看起来像这样:
public class RxBus {
private final Subject<Object, Object> _bus = new SerializedSubject<>(PublishSubject.create());
public void send(Object o) {
_bus.onNext(o);
}
public Observable<Object> toObserverable() {
return _bus;
}
}
基本上就是它,我把它变成了单身(或用DI注入它),然后订阅看起来像这样:
_rxBus.toObserverable()
.subscribe(new Action1<Object>() {
@Override
public void call(Object event) {
if(event instanceof TapEvent) {
_doSomething();
}else if(event instanceof SomeOtherEvent) {
_doSomethingElse();
}
}
});
因此,在进行订阅时,我注意到我正在使用大量的instanceof调用。这让我觉得应该使用访问者模式,因为有许多类型具有相同的基本类型(事件)。在这里使用访客模式的好方法是什么?我在this example
之后开了一辆公共汽车