firePropertyChange - 参数 oldValue 和 newValue 是什么重要吗?

firePropertyChange - does it matter what the parameters oldValue and newValue are?

我目前正在开发一个项目,其中 propertyChangeListener 用于在模型部分发生变化时更新程序的视图部分。该程序解决给定的数独难题并更新模型以包含解决方案。

我使用具有参数 oldValue 和 newValue 的 firePropertyChange 方法。我知道这些必须有所不同才能发生某些事情,但它们到底是什么真的重要吗?在我的程序中,模型总是在发生某些事情时更新,我从不使用 oldValue 或 newValue 中包含的信息。

是否可以将它们分别表示为“1”和“2”以确保它们始终不同?这会导致任何其他问题吗?这是一个名为 clear 的方法,它将数独重置为空白板:

public void clear() {
    String oldBoard = getBoard();
    for (int i=0; i<9; i++) {
        for (int k=0; k<9; k++)
            plan[i][k] = 0;
    }
    pcs.firePropertyChange("clear", oldBoard, getBoard());
}

是的,这在一般意义上很重要,因为当您为被观察实体编写代码时,您编写它的想法是这个实体永远不知道谁或什么在听它或观察者如何将使用听众将要提供给他们的信息。对观察者来说可能重要,也可能不重要,但始终假设它是重要的,保持信息尽可能准确,你的代码对于未来的扩展和使用会更安全。

如果 属性 更改的接收者是您的内部 类 并且他们知道忽略 属性 更改事件的 old/new 值,那么它会起作用.您可能仍然需要清楚地记录这一事实,以防一段时间后您自己忘记它。然而,为了使代码更易于维护和可读,编写自己的侦听器接口将是更好的方法,尽管它需要更多的工作。

一个例子:

public interface SudokuListener {
    void sudokuCleared();
}