設計模式之觀察者模式

 先附上觀察者模式的一個測試代碼。

有空再仔細寫一下。

  1. package com.hbq.test; 
  2.  
  3. import java.util.ArrayList; 
  4.  
  5. /*觀察者模式*/ 
  6. /*觀察者接口*/ 
  7. interface Observer 
  8.     public void update(String context); 
  9.  
  10. interface Observable 
  11.     public void addObserver(Observer obj); 
  12.     public void deleteObserver(Observer obj); 
  13.     public void notifyObserver(String context); 
  14.  
  15. class Hanfeizi implements Observable 
  16.     ArrayList<Observer> observer = new ArrayList(); 
  17.      
  18.     @Override 
  19.     public void addObserver(Observer obj) { 
  20.         // TODO Auto-generated method stub 
  21.         this.observer.add(obj); 
  22.     } 
  23.  
  24.     @Override 
  25.     public void deleteObserver(Observer obj) { 
  26.         // TODO Auto-generated method stub 
  27.         this.observer.remove(obj); 
  28.     } 
  29.  
  30.     @Override 
  31.     public void notifyObserver(String context) { 
  32.         // TODO Auto-generated method stub 
  33.         for( Observer obj:observer) 
  34.         { 
  35.             obj.update(context); 
  36.         } 
  37.     } 
  38.  
  39.     public void haveFun() 
  40.     { 
  41.         System.out.println("韓非子:開始娛樂啦..."); 
  42.         this.notifyObserver("韓非子在娛樂!"); 
  43.     } 
  44.      
  45.     public void haveBreakfast() 
  46.     { 
  47.         System.out.println("韓非子:開始吃飯啦..."); 
  48.         this.notifyObserver("韓非子在吃飯!");  
  49.     } 
  50.      
  51.  
  52. class Lisi implements Observer 
  53.  
  54.     @Override 
  55.     public void update(String context) { 
  56.         // TODO Auto-generated method stub 
  57.         System.out.println("李斯:觀察到韓非子活動啦,開始向老闆彙報...."); 
  58.         this.reportToQinshihuang(context); 
  59.         System.out.println("李斯:彙報完畢,秦老闆賞給他兩個蘿蔔吃吃....\n"); 
  60.     } 
  61.      
  62.     public void reportToQinshihuang(String repContext) 
  63.     { 
  64.         System.out.println("李斯:報告,秦老闆!韓非子有活動啦--->"+repContext); 
  65.     } 
  66.  
  67. class Wangsi implements Observer 
  68.  
  69.     @Override 
  70.     public void update(String context) { 
  71.         // TODO Auto-generated method stub 
  72.         System.out.println("王四:觀察到韓非子活動啦,開始向老闆彙報...."); 
  73.         this.reportToQinshihuang(context); 
  74.         System.out.println("王四:彙報完畢,秦老闆賞給他兩個蘿蔔吃吃....\n"); 
  75.     } 
  76.      
  77.     public void reportToQinshihuang(String repContext) 
  78.     { 
  79.         System.out.println("王四:報告,秦老闆!韓非子有活動啦--->"+repContext); 
  80.     } 
  81.  
  82. class Zhangsi implements Observer 
  83.  
  84.     @Override 
  85.     public void update(String context) { 
  86.         // TODO Auto-generated method stub 
  87.         System.out.println("張四:觀察到韓非子活動啦,開始向老闆彙報...."); 
  88.         this.reportToQinshihuang(context); 
  89.         System.out.println("張四:彙報完畢,秦老闆賞給他兩個蘿蔔吃吃....\n"); 
  90.     } 
  91.      
  92.     public void reportToQinshihuang(String repContext) 
  93.     { 
  94.         System.out.println("張四:報告,秦老闆!韓非子有活動啦--->"+repContext); 
  95.     } 
  96.  
  97. public class test { 
  98.  
  99.     /** 
  100.      * @param args 
  101.      */ 
  102.     public static void main(String[] args) { 
  103.         // TODO Auto-generated method stub 
  104.         Observer lisi = new Lisi(); 
  105.         Observer wangsi = new Wangsi(); 
  106.         Observer zhangsi = new Zhangsi(); 
  107.          
  108.         Hanfeizi hanfeizi = new Hanfeizi(); 
  109.          
  110.         hanfeizi.addObserver(lisi); 
  111.         hanfeizi.addObserver(wangsi); 
  112.         hanfeizi.addObserver(zhangsi); 
  113.          
  114.         hanfeizi.haveFun(); 
  115.          
  116.         hanfeizi.haveBreakfast(); 
  117.     } 
  118.  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章