设计模式读书笔记-观察者模式

2016-08-21
读书笔记
  • 定义:对象间有一对多的依赖关系,使得每当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新。
  • 被观察者执行某此方法(此方法中要添加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();
    }
}

Kommentare: