Rx Java如何订阅变量

时间:2018-07-27 07:26:17

标签: java rx-java reactive-programming

我开始学习Rx Java并有一个简单的问题

我有一个Foo.class班。在类内部,我有一个变量Object mObject,它带有mObject的getter和setter方法。在我的另一堂课Bar.class中,我将对mObject的值进行更改做出反应。如何用Rx Java实现它?

我尝试了这种解决方案,但是我不明白那里的代码 Detecting value change using Rxjava

2 个答案:

答案 0 :(得分:0)

您可以选择Publish Subject。这样,您还可以观察单个Int变量。

转到此处获取文档Publish Subject

答案 1 :(得分:0)

Object类的实现包装器,它将控制对该对象的访问,如果发生更改,它将事件推送给Subject。

public class ObjectChanges extends Object or Implements its interface {
   private Object mObject;
   private Subject<Object> subject;

   <constructor that takes mObject>

   public void setField(String value) {
      mObject.setField(value);
      subject.onNext(mObject)  
   }

   public Observable<Object> subscribe() {
      return (Observable<Object>) this.subject;
   } 

   ...
}

您也可以使用装饰器模式。我建议您不要添加此逻辑对象,因为那样可能会导致很多体系结构问题。例如,您可能想要实现另一个包装器,该包装器将验证该对象的字段,您是否也将在Object中执行它?另一方面,您只需实现该包装,并在需要的地方使用它即可:

Object obj = new ValidationWrapper(new RxWrapper(new Object()));