1.观察者:
package com.bian.obser;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class ClassObserver implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent evt) {
// TODO Auto-generated method stub
if(evt.getPropertyName().equals("ClassObject.name")){
//观察到 监视的对象发生改变。
System.out.println("observer object changed ");
System.out.println(evt.getPropertyName());
System.out.println(evt.getNewValue());
System.out.println(evt.getOldValue());
System.out.println(evt.getPropagationId());
System.out.println(evt.getSource().toString());
}
}
}
2.被观察者:
package com.bian.obser;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class ClassObject {
protected String name="xiwei";
protected String sex;
protected PropertyChangeSupport listenerSupport = new PropertyChangeSupport(this);
public String getSex() {
return sex;
}
public void setSex(String sex) {
firePropertyChange("ClassObject.sex", this.sex, sex);
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
firePropertyChange("ClassObject.name", this.name, name);
this.name = name;
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
listenerSupport.addPropertyChangeListener(listener);
}
public void firePropertyChange(String propName, Object oldValue,Object newValue) {
listenerSupport.firePropertyChange(propName, oldValue, newValue);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listenerSupport.removePropertyChangeListener(listener);
}
}
3.测试类:
package com.bian.obser;
public class ClassTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassObserver cOberser = new ClassObserver();
ClassObject cObject = new ClassObject();
cObject.addPropertyChangeListener(cOberser);
cObject.setName("bianstutao");
cObject.setSex("male");
}
}