2

これが私が考えた2つのオプションです。

  1. それぞれが 1 つのクラスを表す複数のモデルを用意します。2 つの int オブジェクトがある場合、2 つのオブザーバブルを作成し、どのオブザーバブルが変更されたかをビューでチェックする必要があります。

  2. 1 つのオブザーバブル (モデル) で、同じクラスの複数のオブジェクトを Array にグループ化します。ビューでは、配列を反復し、配列内のすべてのデータを含むすべてのフィールドを変更する必要があります。

私は、Java Observable と Observer を使用して MVC パターンを実装する方法を学び始めています。私が言及した2つの方法は最善の解決策ではありません。これについて何らかの助けが得られることを願っています。

編集: 例、私は監視可能なクラスに次のメソッドを持っています。誰かが int b の値を取得するためにオブザーバーに update() を書く方法を教えてもらえますか?

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 を拡張するクラスがある場合、さまざまな理由で変更イベントを発生させることができます。値が変更されたときにオブザーバーに通知したい場合は、セッターで setChanged() と notifyObservers() を呼び出すだけです。Thilo が言ったように、notifyObservers(); のパラメーターとして変更されたものを渡すことができます。

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

Observer と Observable を十分に理解するために、 Javadocをよく読むことをお勧めします。

于 2012-08-16T10:22:20.223 に答える
0

Observer クラスで a と be への 2 つの参照を作成すると、次のように update コマンドを使用できます。

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