觀察者模式

chyx413332087 13年前發布 | 827 次閱讀
       觀察者模式:  簡單的說,就是觀察,監控莫一對象的情況, 那么就出現,觀察者與被觀察者對象,在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();  
 }
}


 本文由用戶 chyx413332087 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!