观察者模式

13年前
       观察者模式:  简单的说,就是观察,监控莫一对象的情况, 那么就出现,观察者与被观察者对象,在java 中 实现 观察与被观察者  ,jdk中已经帮我们实现了 ,java.util.Observable 被观察者 ,   java.util.Observer 观察者
Observable     这个类里面实现 notifyObservers() addObserver(Observer o)等,通知观察者,添加观察者方法,
    被观察者对象,实现Observer   接口的  void update(Observable o, Object arg); 方法,传入更新,的观察者对象,和参数,
   我们自己也可以实现 Observable和Observer 对象,
 
/**
 * @author Administrator
 *  监控的具体人  观察者
 */
public class LiShiPerson implements ILiShi,Observer {
 //告诉秦始皇
    public void  tellQingShiHuan(String content)
    {    
     System.out.println("告诉秦始皇。。");
    
    }    
 public void update(Observable o, Object arg) {
  
  System.out.println("进入观察者模式");
  this.tellQingShiHuan(arg.toString());
 }
}
 

/**
 * @author Administrator
 *  被监控的具体人  被观察者
 */
public class HanFeiPerson extends Observable  implements IHanFei{
// private LiShiPerson  lishi=new LiShiPerson();
 public void eateBreakFase()
 {
  System.out.println("被监控人需要吃饭");
      //通知观察者
  super.setChanged();  //设置被观察改变
  super.notifyObservers("我在吃饭哦...");  //唤醒观察者
  //lishi.tellQingShiHuan();
 } 
}
 
/**
 * @author Administrator
 *  观察者与被观察者的 测试
 */
public class ObserverClientTest { 
 public  static void main(String []args)
 {  
  Observer  lishi=new LiShiPerson();  
  HanFeiPerson  hanFeiPerson=new HanFeiPerson();
  hanFeiPerson.addObserver(lishi);  
  hanFeiPerson.eateBreakFase();  
 }
}