使用OO Observer模式而不更新发生更改的对象

Rus*_*ell 1 java oop swing jtextfield observer-pattern

我正在构建一个包含GUI和模型的应用程序.我正在使用Observer模式(使用java的内置接口)在模型中的字段发生更改时更新GUI.

这通常工作正常,但我有一种情况,其中模型中的特定String变量(特别是文件的url)可以通过两个单独的JTextFields(swing)更改,其内容实际上反映了模型变量的值有问题.

我遇到的问题来自于这些JTextField之一的更改需要更新模型的状态以及其他JTextField的内容.我的模型确保仅在模型状态发生变化的情况下才将通知发送给观察者.但是,修改JTextFields的过程涉及消隐它的文本内容然后重新设置它.

没有太多细节,结果就是更新/通知过程陷入了infinte循环.我暂时通过抛开这个特定问题的观察者模式来解决这个问题,但我想知道是否有人能够建议一种巧妙的方法来确保特定组件不会被源自同一组件的更改"更新".

任何帮助赞赏.

tra*_*god 6

正如Java SE Application Design With MVC中所讨论的,这是应用程序设计的几个问题之一.该建议的方法依赖于PropertyChangeListener所示这里.在PropertyChangeEvent包括参考新旧及价值观.