<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Feng.Li's Java See

    抓緊時間,大步向前。
    隨筆 - 95, 文章 - 4, 評論 - 58, 引用 - 0
    數據加載中……

    Java 觀察者模式

    網上商店中的商品在名稱、價格發生變化時,必須自動通知會員,Java的API為我們提供了Observer接口和Observable類來實現所謂觀察者模式。
      Observable(可觀察者)類允許在自身發生改變時,通知其它對象(實現接口Observer,觀察者)。
      下面是一個可觀察者(產品類):
    import java.util.*;
    public class product extends Observable{
       private String name;////產品名
       private float price;////價格

       public String getName(){ return name;}
       public void setName(String name){
        this.name=name;
       ////設置變化點
        setChanged();
        notifyObservers(name);////通知觀察者

       }   

       public float getPrice(){ return price;}
       public void setPrice(float price){
        this.price=price;
       ////設置變化點
        setChanged();
        notifyObservers(new Float(price));

       }

       ////以下可以是數據庫更新 插入命令.
       public void saveToDb(){
       System.out.println("saveToDb");
        }

    }

    下面是兩個觀察者:
    import java.util.*;
    public class NameObserver implements Observer{

       private String name=null;
       public void update(Observable obj,Object arg){
         if (arg instanceof String){
          name=(String)arg;
          ////產品名稱改變值在name中
          System.out.println("NameObserver :name changet to "+name);

         }

          }
       }

    import java.util.*;
    public class PriceObserver implements Observer{
       private float price=0;
       public void update(Observable obj,Object arg){
         if (arg instanceof Float){

          price=((Float)arg).floatValue();
      
          System.out.println("PriceObserver :price changet to "+price);

         }


       }

    }
    下面是測試類:
    public class Test {

       public static void main(String args[]){
        Product product=new Product();
        NameObserver nameobs=new NameObserver();
        PriceObserver priceobs=new PriceObserver();

        ////加入觀察者
        product.addObserver(nameobs);
        product.addObserver(priceobs);

        product.setName("applet");
        product.setPrice(9.22f);

       }
    }
    運行結果:
    C:\java>java  Test
    NameObserver :name changet to applet
    PriceObserver :price changet to 9.22

    posted on 2007-05-09 17:07 小鋒 閱讀(776) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 一级毛片大全免费播放| 伊人亚洲综合青草青草久热| 三级网站在线免费观看| 国产亚洲日韩在线a不卡| 亚洲人成网国产最新在线| 亚洲高清视频在线观看| 国产亚洲情侣一区二区无| 免费看少妇作爱视频| 免费精品国产自产拍在| 24小时日本韩国高清免费| 青青青国产手机频在线免费观看| 一区二区三区精品高清视频免费在线播放 | 亚洲一级毛片免费看| 一个人免费视频在线观看www| 免费的黄色的网站| 亚洲av无一区二区三区| 亚洲色大成WWW亚洲女子| 亚洲国产成人资源在线软件| 亚洲一区二区三区日本久久九| 亚洲人成在线播放网站| 国产精品亚洲综合一区| 亚洲精品国产电影| 亚洲高清免费视频| 亚洲精品国产精品国自产观看| 夜色阁亚洲一区二区三区| 国产青草视频免费观看97 | 亚洲日韩看片无码电影| 亚洲日本乱码卡2卡3卡新区| 亚洲一区二区三区亚瑟 | 成人免费在线观看网站| 成人免费午夜在线观看| 成人毛片视频免费网站观看| 午夜精品在线免费观看| 日韩一品在线播放视频一品免费| 成人免费视频一区| 日韩在线a视频免费播放| 国产精品久久久久免费a∨| 婷婷亚洲综合五月天小说| 久久精品国产亚洲综合色| 亚洲AV无码专区亚洲AV伊甸园| 久久精品国产精品亚洲色婷婷|