【发布时间】:2009-01-13 20:30:54
【问题描述】:
As described in another question,我有一组模型对象和一组关联的面板对象,它们允许用户访问模型对象中的数据。面板被注册为模型的 PropertyChangeListener,这样如果有其他东西更新模型中的值,它就会触发 PropertyChangeEvent,面板接收它并知道从模型中重新同步它的值。 (目前我只是天真地更新所有值,但这可以更智能地只提取更改的属性。)
当模型被某个任意的未知来源更新时,所有这些都是有意义的,这确实发生在我的应用程序中。但是,大多数情况下,模型的属性是由面板本身设置的。在这种情况下,既然我已经将面板作为模型的 PropertyChangeListeners 连接起来,我的代码正在做一些没有意义的事情:在面板更新模型后,面板从模型接收一个 PropertyChangeEvent 并从中提取相同的值它最初发送给模型的模型。不需要进行更新,而且这样做没有设计意义。
那么我如何将某些东西注册为 PropertyChangeListener,然后说“当我是 PropertyChangeEvents 的来源时,不要通知我?” (请注意,我无法通过调用 PropertyChangeEvent.getSource() 来回答这个问题;它会给我我的模型,而不是首先发送值的面板;没有办法查看这个并判断是什么改变了属性.)
【问题讨论】:
标签: java model-view-controller