如何在Java observable(MVC)中观察同一类的多个数据?

时间:2012-08-16 09:56:44

标签: java model-view-controller observable

这是我想到的2个选项。

  1. 有多个模型,每个模型代表一个类。如果我有2个int 对象,我需要创建2个observable并查看哪个 可观察性发生了变化。

  2. 在单个observable(模型)中,将同一组的多个对象组合在一起 class into Array。在视图中,我将不得不迭代数组和 更改包含数组中所有数据的所有字段。

  3. 我开始学习如何使用java observable和observer实现MVC模式。我发现我提到的两种方法并不是最好的解决方案。希望可以得到一些帮助。

    修改 例如,我在observable类中有以下方法,有人可以告诉我如何在observer中编写update()以获取int b的值吗?

    public void setIntA(int a){
         this.intA = a;
         setChanged();
         notifyObservers(a);
    }
    public void setIntB(int b){
         this.intB = b;
         setChanged();
         notifyObservers(b);
    }
    setIntA(5);
    setIntB(3);
    

2 个答案:

答案 0 :(得分:0)

我不确定你在这里要做什么,但是如果你有一个扩展Observable的类,那么它可以出于各种原因触发一个改变事件。如果您只想在任何值更改时通知观察者,那么您只需要在setter中调用setChanged()和notifyObservers()。 就像Thilo所说的那样,你可以将改变后的东西作为参数传递出去 notifyObservers();

public void setIntA(int a){
     this.intA = a;
     setChanged();
     notifyObservers(a);
}

我建议您确保彻底阅读Javadoc以充分了解观察者和观察者。

答案 1 :(得分:0)

在Observer类上创建两个对a和be的引用,你可以像这样使用update命令。

public void update(Observable o, Object arg)
{
  if (o == a)
  {
     //do what you want with arg
  }
}