被观察者 继承 Observerable 类
在方法中 this.setChanged() ;this.notifyObservers()
观察者 实现 Observer接口
重写update方法来实现对观察者的回应
在被观察者出现多继承的情况时 考虑有adapter的方式实现
public class cat extends BaseClass (extends Observerable) public class cat extends Observerable{ private BaseClass bc = new BaseClass() }
package com.cht.observer; import java.util.Observable; import java.util.Observer; public class MouseCatMan { public static void main (String [] args){ Cat c = new Cat(); Observer o1 = new Mouse(); Observer o2 = new Man(); c.addObserver(o1); Mouse m = (Mouse)o1; m.addObserver(o2); //非常关键的一部 调用c中的方法开始触发 c.cry(); } } class Cat extends Observable{ public void cry(){ System.out.println("the cat cry"); this.setChanged(); this.notifyObservers(); } } class Mouse extends Observable implements Observer { @Override public void update(Observable o, Object arg) { System.out.println("the cat cry ! mouse run!!"); this.setChanged(); this.notifyObservers(); } } class Man implements Observer{ @Override public void update(Observable o, Object arg) { System.out.println("Scared me!!"); } }