0

我目前正在开发一个项目,其中当模型部分中的某些内容发生更改时,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());
}
4

2 回答 2

1

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

于 2018-02-03T13:55:11.237 回答
1

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

一个例子:

public interface SudokuListener {
    void sudokuCleared();
}
于 2018-02-04T06:32:03.417 回答