我正在尝试使用 JDK Observer/Observable 实现观察者模式,但是我正在努力寻找在包含 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
一个 Observable,MainBean
并将ChildBean
. 但是,这意味着我需要在 上显式调用 notifyObservers ChildBean
,如下所示:
...
mainBean.getComplexProperty().setSomeProperty("new value");
mainBean.getComplexProperty().notifyObservers();
mainBean.notifyObservers();
...
我什至应该在 mainBean 上调用 notifyObservers() 吗?或者是否应该对 complexProperty 级联调用并触发 mainBean 中的 notifyObservers() 调用?
这是执行此操作的正确方法,还是有更简单的方法?