其实这个模式在我看来是个很简单的模式,就是被观察者如果有变化,就通知观察者行动,这里是一个比较简单的Demo,周杰伦要开演唱会,得通知粉丝啊,粉丝在收到这个通知后,做出一个行动。
先来定义周杰伦,需要让他实现Observable抽象类,代码如下:
public class ZhouJieLun extends Observable {
public void KaiYanChangHui(){
System.out.println("大家好,我下午开演唱会,请大家参加啊!");
//得通知观察者啊
super.setChanged();
notifyObservers();
}
}
再来定义两个粉丝,这两个粉丝需要实现Observer接口,如下:
public class FenSi1 implements Observer {
@Override
public void update(Observable o, Object arg) {
System.out.println("粉丝1来了....");
}
}
public class FenSi2 implements Observer {
@Override
public void update(Observable o, Object arg) {
System.out.println("粉丝2来了....");
}
}
再来看场景类,更简单:
public class Client {
public static void main(String[] strings){
//被观察者
ZhouJieLun zhouJieLun=new ZhouJieLun();
//观察者
FenSi1 fenSi1=new FenSi1();
FenSi2 fenSi2=new FenSi2();
//为被观察者添加观察者
zhouJieLun.addObserver(fenSi1);
zhouJieLun.addObserver(fenSi2);
//活动
zhouJieLun.KaiYanChangHui();
}
}
运行后,结果如下:
关于这个模式,只需要知道让被观察者通知观察者就可以了,此处我借用的是Java本身提醒的类Observable与接口Observer。