RxJava总线 - 订阅时如何使用访客模式

时间:2016-11-01 19:11:32

标签: rx-java visitor-pattern

所以我使用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

之后开了一辆公共汽车

0 个答案:

没有答案