- 定义:对象间有一对多的依赖关系,使得每当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新。
- 被观察者执行某此方法(此方法中要添加super.setChanged();super.notifyObservers)后,所有观察者均会执行自己的update方法(前提是client中要把对被观察者执行addObserver将观察者注册到自身)
- 代码:
public class HanFeiZi extends Observable{
public void activeOne(){
System.out.println("被观察者韩非子正在进行活动1.");
super.setChanged();//通知所有的观察者
super.notifyObservers("被观察者韩非子活动1时,传递给各观察者信息!");
}
public void activeTwo(){
System.out.println("被观察者韩非子正在进行活动2.");
super.setChanged();//通知所有的观察者
super.notifyObservers("被观察者韩非子活动2时,传递给各观察者信息!");
}
}
public class Lisi implements Observer{
public void update(Observable observable, Object arg1) {
System.out.println("李斯观察到韩非子开始活动:"+arg1.toString());
}
}
public class Wangsi implements Observer{
public void update(Observable observable,Object arg1){
System.out.println("王斯观察到韩非子开始活动:"+arg1.toString());
}
}
public class Client {
public static void main(String[] args){
HanFeiZi haiFeiZi = new HanFeiZi();//实例化被观察者
Lisi lisi = new Lisi();//实例化观察者1
Wangsi wangsi = new Wangsi();//实例化观察者2
haiFeiZi.addObserver(lisi);//向被观察者注册观察者1
haiFeiZi.addObserver(wangsi);//向被观察者注册观察者2
haiFeiZi.activeOne();//被观察者活动
haiFeiZi.activeTwo();
}
}