观察者模式:
两个对象:1个被观察者对象,1个监听对象,被观察者添加到监听对象中,当被观察者对象被观察属性发生变化时,监听对象收到变更请求,从而进行对应的处理
如:在画图的时候,数据 TreeData 是被观察者对象,TreeObserver 是观察者,当数据 TreeDate 发生改变时,TreeObserver 的update 方法被触发,从而可以调用重新渲染方法。。。
public class Test {
//
public static void main(String[] args) {
TreeData treeData = new TreeData();
treeData.setName("数据1");
treeData.setNum(3);
TreeObserver treeObserver = new TreeObserver();
treeData.addObserver(treeObserver);
treeData.setNum(6);
}
//被观察者
static class TreeData extends Observable{
private int num = 0;
private String name = "";
public String getName( ) {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum( ) {
return num;
}
public void setNum(int num) {
this.num = num;
setChanged();
notifyObservers(this);
}
}
//观察者
static class TreeObserver implements Observer{
@Override
public void update(Observable o, Object arg) {
TreeData treeData = (TreeData)arg;
System.out.println(treeData.getName()+"数量发送了改变:"+treeData.getNum());
}
}