一个班级可以观察多个可观测量吗?

时间:2013-08-07 10:05:30

标签: java android observer-pattern

如果实现Observer的类可以观察多个Observable类,那么该类将如何知道哪个Observable类已更改?

public class MainActivity extends Activity implements Observer {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ObservableClass1 oc1 = new ObservableClass1();
        oc1.addObserver(this);
        ObservableClass2 oc2 = new ObservableClass2();
        oc2.addObserver(this);
    }

    @Override
    public void update(Observable observable, Object data) {

        //How will I know which observable hasChanged?
    }
}

我在observable上找不到任何比较或知道其类名的方法。

或者我应该使用

observable.getClass().getSimpleName();

并进行字符串比较?

2 个答案:

答案 0 :(得分:0)

您还可以使用instanceof运算符来检查哪个Observable类称为更新,例如:

     @Override
     public void update(Observable observable, Object data) {

       if (observable instanceof ObservableClass1) {
          //prcess ObservableCLass1 update here
       } else if (observable instanceof ObservableClass2) {
          //process ObservableClass update here
       } else {
          //some default action or error
       }
    }

答案 1 :(得分:0)

有可能。 java observable对象可以强制转换为它的子类,这样就可以实现(使用instanceof运算符)