观察者模式
观察者模式: 简单的说,就是观察,监控莫一对象的情况, 那么就出现,观察者与被观察者对象,在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();
}
}