【发布时间】:2008-09-23 09:42:52
【问题描述】:
我对@987654321@ 的设计有疑问。我实现了VetoableChangeListener 接口来监听模型类中属性的变化,所以当模型触发时
vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException
...我尝试将更改保存在数据库中,这可能会失败(例如,SQLException)。如果失败,我会抛出 PropertyVetoException 以恢复模型中的更改。
模型在VetoableChangeSupport(JDK 类)中进行委托,当它接收到PropertyVetoException 时,它会捕获它并通知恢复到所有VetoableChangeListener,与oldValue/newValue 互换(稍后它重新抛出异常),以便事件再次出现在我的课堂上,我尝试再次保存在数据库中,等等......
我有一个解决方法,即在没有人抛出PropertyVetoException 之前模型不会改变,所以在VetoableChangeListener 我首先检查我要保存在数据库中的数据是否不等于模型中的数据,如果相等,我将忽略更改。
还有其他更好的解决方法吗?
【问题讨论】:
标签: java model-view-controller