预先触发propertyChangeEvent的危险

时间:2018-04-26 16:36:24

标签: java swing events

在实际更改属性之前触发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 :(得分:1)

在你的第二段代码中,你正在通知听众当状态已经改变时,状态已经改变,这是不好的或安全的。如果听众有自己的行为或状态变化,取决于通知时出现的新状态怎么办?使用通知的主要规则之一是通知代码不需要知道监听代码对信息的作用,并且您的第二位代码不满足此要求。坚持第一种方式。