在java中,您可以让模型扩展Observable类,并且视图实现Observer接口,以便使用观察者模式实现MVC,例如:
public AppView implements Observer{
public void update(Observable arg0, Object arg1) {
System.out.println((int)arg1);
}
}
public AppModel extends Observable{
public void doStuff(){
x = x +1;
setChanged();
notifyObservers(x);
}
}
现在,当模型只需要将一个变量更新到视图时,上面的示例没有问题。当我需要通知多于1个变量的变化视图时,事情通常变得丑陋或复杂。有没有一个干净的方法来解决这个问题?一个例子是我需要通知整数值和字符串的变化。
修改
我知道有一些解决方案可以解决这个问题。我只想就你最好的方法发表意见。
答案是:
notifyObservers("x");
这会告诉视图更新x。 另一个是模型自我传递
notifyObservers();
视图会检查值。如果您有其他方法,欢迎他们。
答案 0 :(得分:2)
当听到多个变量时,我不确定“变丑”的含义是什么意思。我不是MVC的专家,但请考虑一下,
notifyObservers(...)
方法放在所有绑定属性的setter方法中(所有要使其可听的变量。 修改强>
你提到这是一个可能的解决方案:
notifyObservers(this);
但是我会避免这种情况,因为你的观察者已经收到了这些信息。