import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
/**
*
* @author max
*/
public class Domain{
protected String id;
protected String name;
protected String desName;
protected PropertyChangeSupport listeners = new PropertyChangeSupport(this);
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
firePropertyChange("Domain.id", null, id);
}
public String getDesName() {
return desName;
}
public void setDesName(String desName) {
this.desName = desName;
firePropertyChange("Domain.desName", null, desName);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
firePropertyChange("Domain.name", null, name);
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.addPropertyChangeListener(listener);
}
public void firePropertyChange(String propName, Object oldValue, Object newValue) {
listeners.firePropertyChange(propName, oldValue, newValue);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.removePropertyChangeListener(listener);
}
}
java 代码
- public class SimpleObserver implements PropertyChangeListener {
- ....
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if(evt.getPropertyName().equals("Domain.name")){
- //do some work
- }
- }
- }
下面是个简单的测试类:
java 代码
- public class SimpleTest{
- public static void main(String[] args) {
- SimpleObserver observer = new SimpleObserver();
- Domain domain = new Domain();
- domain.addPropertyChangeListener(observer);
- domain.setName("yangsq");
- ......
- }
- }
很显然,可以观察到SimpleObserver中propertyChange方法的执行。