//观察者模式,一个观察,一个被观察,或者叫可观察;响应接口模式,那就观察接口,被观察接口;
//定义:一旦被观察有什么风吹草动,立即通知观察的那家伙。
//怎么实现?肯定接口实现成观察和被观察两个类。
//那怎么一个有风吹就通知观察那家伙。那肯定是把观察的那家伙放到被观察里面的某个地方
//一旦风吹,就调用观察的方法。他就被知道了。
//jdk经典案例java.util.Observer和java.util.Observable两个家伙
//java.util.Observer接口,实现成为观察者。实现update方法。被通知的方法。
//java.util.Observable,这家伙是一个类,不搞成接口。不知道为啥。
//里面搞了个vector,用来装观察者。有什么风吹就调用notifyObservers方法。
//里面还是synchronized方法。因为里面vector控制不了竞态条件
//里面setChangeed又搞成protect,非同个包没法使用。硬生生要我继承创建一个新的被观察者类。
public class XX implements java.util.Observer{
//Observable o 带进来了
@Override
public void update(Observable o, Object arg) {
System.out.println("Object arg"+arg);
}
}
public class YY extends java.util.Observable{
public void noticeAll(){
super.setChanged();
super.notifyObservers("都起来干活了");
}
}
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws ParseException{
test.XX b = new test().new XX();
test.YY a = new test().new YY();
a.addObserver(b);
System.out.println(a.countObservers());
a.countObservers();
a.noticeAll();