import java.util.Observable; import java.util.Observer; /** * 观察者模式(JDK实现)。 * @author Bright Lee */ public class JdkObserverPattern { public static void main(String[] args) { AnimalKeeper subject = new AnimalKeeper(); // 饲养员(主题) Observer tiger = new Tiger(); // 老虎 Observer bear = new Bear(); // 狗熊 Observer fox = new Fox(); // 狐狸 subject.addObserver(tiger); // 把老虎设为观察者 subject.addObserver(bear); // 把狗熊设为观察者 subject.addObserver(fox); // 把狐狸设为观察者 subject.setChanged(); subject.notifyObservers("快来吃饭!"); // 饲养员通知所有观察者 System.out.println("=================="); subject.deleteObserver(bear); // 把狗熊从观察者名单中移除 subject.setChanged(); subject.notifyObservers("快来喝水!"); // 饲养员再次通知所有观察者 } } class AnimalKeeper extends Observable { public void setChanged() { super.setChanged(); } } class Tiger implements Observer { public void update(Observable o, Object msg) { System.out.println("老虎收到通知:" + msg); } } class Bear implements Observer { public void update(Observable o, Object msg) { System.out.println("狗熊收到通知:" + msg); } } class Fox implements Observer { public void update(Observable o, Object msg) { System.out.println("狐狸收到通知:" + msg); } }打印结果如下:
狐狸收到通知:快来吃饭!
狗熊收到通知:快来吃饭!
老虎收到通知:快来吃饭!
==================
狐狸收到通知:快来喝水!
老虎收到通知:快来喝水!
青蛙客服系统:https://download.csdn.net/download/look4liming/93326820