2

这是我想到的2个选项。

  1. 有多个模型,每个模型代表一个类。如果我有 2 个 int 对象,我需要创建 2 个 observable 并查看哪些 observable 已更改。

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

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

编辑: 例如,我在 observable 类中有以下方法,有人可以告诉我如何在观察者中编写 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);
4

2 回答 2

0

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

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

我建议您确保彻底阅读Javadoc,以便更好地理解 Observer 和 Observable。

于 2012-08-16T10:22:20.223 回答
0

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

public void update(Observable o, Object arg)
{
  if (o == a)
  {
     //do what you want with arg
  }
}
于 2014-03-26T08:09:48.363 回答