Опасности предварительного запуска свойстваChangeEvent - PullRequest
0 голосов
/ 26 апреля 2018

Каковы опасности, если таковые имеются, при запуске propertyChangeEvent перед фактическим изменением свойства?

В настоящее время у меня есть много кода, который выглядит следующим образом:

public void setConfidence (int newConfidence) {
    int old = confidence;
    confidence = newConfidence;
    pcs.firePropertyChange("confidence", old, confidence);
}

Было бы лучше и избежать копирования, чтобы вызвать событие перед изменением свойства:

public void setConfidence (int newConfidence) {
    pcs.firePropertyChange("confidence", confidence, newConfidence);
    confidence = newConfidence;
}

В однопоточном приложении есть ли опасности при предварительном запуске события? Или другие причины предпочесть стрельбу после?

1 Ответ

0 голосов
/ 26 апреля 2018

Во втором фрагменте кода вы уведомляете слушателей, что состояние изменилось, когда оно не изменилось, что не является хорошим или безопасным. Что, если у слушателей есть свое собственное поведение или изменение состояния, которое зависит от нового состояния, присутствующего во время уведомления? Одним из основных правил использования уведомлений является то, что уведомляющий код не должен знать, что код прослушивания делает с информацией, и ваш второй бит кода не удовлетворяет этому. Придерживайтесь первого пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...