观察者模式

来源:互联网 发布:卡拉ok点歌软件 编辑:程序博客网 时间:2024/04/30 03:21
被观察者 
Java代码  收藏代码
  1. import java.util.Observable;  
  2.   
  3. /** 
  4.  * 被观察者 
  5.  * @author RuiLin.Xie - xKF24276 
  6.  * 继承被观察者Observable 
  7.  */  
  8. public class Main extends Observable  
  9. {  
  10.   
  11.     /** 
  12.      * 当被观察者有Changed时,通知观察者 
  13.      * @param arg 
  14.      */  
  15.     public void doBusiness(Object arg)  
  16.     {  
  17.         //设置修改状态  
  18.         super.setChanged();  
  19.         //通知观察者  
  20.         super.notifyObservers(arg);  
  21.     }  
  22.       
  23.     /** 
  24.      * 程序入口 
  25.      * @param args 
  26.      */  
  27.     public static void main(String[] args)  
  28.     {  
  29.         //实例一个被观察者  
  30.         Main ob = new Main();  
  31.           
  32.         //增加进程与任务栏两个观察者  
  33.         ob.addObserver(new ProcessObserver());  
  34.         ob.addObserver(new TaskbarObserver());  
  35.           
  36.         //处理业务,当关闭一个eclipse时,通知两个观察者同时也移除该任务  
  37.         ob.doBusiness("eclipse");  
  38.                   
  39.     }  
  40. }  


观察者1 
Java代码  收藏代码
  1. import java.util.Observable;  
  2. import java.util.Observer;  
  3.   
  4. /** 
  5.  * 进程观察者,实现观察者Observer接口 
  6.  * @author RuiLin.Xie - xKF24276 
  7.  */  
  8. public class ProcessObserver implements Observer  
  9. {  
  10.   
  11.     /** 
  12.      * 实现观察者接口,当发现被观察者有Changed时执行该方法 
  13.      */  
  14.     @Override  
  15.     public void update(Observable o, Object arg)  
  16.     {  
  17.         System.out.println("从进程列表中删除" + arg + "进程");  
  18.     }  
  19.   
  20. }  


观察者2 
Java代码  收藏代码
  1. import java.util.Observable;  
  2. import java.util.Observer;  
  3.   
  4. /** 
  5.  * 任务栏观察者,实现观察者Observer接口 
  6.  * @author RuiLin.Xie - xKF24276 
  7.  */  
  8. public class TaskbarObserver implements Observer  
  9. {  
  10.   
  11.     /** 
  12.      * 实现观察者接口,当发现被观察者有Changed时执行该方法 
  13.      */  
  14.     @Override  
  15.     public void update(Observable o, Object arg)  
  16.     {  
  17.         System.out.println("从任务栏移除" + arg + "任务");  
  18.     }  
  19.   
  20. }  
原创粉丝点击