JDK Observer / Observableを使用してObserverパターンを実装しようとしていますが、プロパティとしてBeanを含むBeanでそれを使用するための最良の方法を見つけるのに苦労しています。私の具体的な例を挙げましょう:
(そのプロパティのいずれかで)変更を監視する必要がある私の主なBeanは..
public class MainBean extends Observable {
private String simpleProperty;
private ChildBean complexProperty;
...
public void setSimpleProperty {
this.simpleProperty = simpleProperty;
setChanged()
}
}
..ただし、その中の何かに新しい値を設定したい場合ChildBean
、MainBeanの変更はトリガーされません。
...
mainBean.getComplexProperty().setSomeProperty("new value");
...
私が考えたより明白な解決策はChildBean
、オブザーバブルも作成し、オブザーバブルを作成するMainBean
ことですChildBean
。ChildBean
ただし、これは、次のように、でnotifyObserversを明示的に呼び出す必要があることを意味します。
...
mainBean.getComplexProperty().setSomeProperty("new value");
mainBean.getComplexProperty().notifyObservers();
mainBean.notifyObservers();
...
mainBeanでnotifyObservers()を呼び出す必要がありますか?または、complexPropertyカスケードを呼び出して、mainBeanでnotifyObservers()呼び出しをトリガーする必要がありますか?
これはこれを行うための適切な方法ですか、それとももっと簡単な方法がありますか?