问题描述
|
嗨,我对使用此模式有疑问。在进行侦听时,方法的名称应该是触发事件的模型中的方法的名称吗?如:
(显示我的意思的示例)
模型:
public void setName(String name) {...}
public void setAge(int age) {...}
听众
void nameChanged(TheEventObject event);
void ageChanged(TheEventObject event);
还是应该这样:
void personChanged(The EventObject event);
人员前缀是Model类的名称。
概括一下,接口中的方法应该用于更改模型中某些值的每个特定方法,还是应该仅显示“嘿,模型已更改”?
解决方法
我认为,将来更容易的是在每个将要交付的父抽象类中以另一种方式创建,您可以创建某个类的实例,该实例将管理通知类型的属性更改管理器(观察者),从而触发属性更改后发生的事件。
firePropertyChange(\"properyName\",newValue,oldValue);
为此,您可以使用java.beans.PropertyChangeEvent
属性更改观察器的基本接口:
void fireBeforePropertyChange(String propertyName,Object currentValue,Object newValue) throws PropertyChangeException;
void removeBeforePropertyChangeListener(BeforePropertyChangeListener beforePropertyChangeListener);
Enumeration<BeforePropertyChangeListener> getBegorePropertyChangeListeners();