觀察者模式
觀察者模式: 簡單的說,就是觀察,監控莫一對象的情況, 那么就出現,觀察者與被觀察者對象,在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 {
* @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());
}
}
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();
}
}
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();
}
}
* @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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!