<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 小鋒 閱讀(775) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 日韩精品视频免费观看| 波多野结衣亚洲一级| 午夜视频免费观看| 久久亚洲免费视频| 日本黄页网址在线看免费不卡| 亚洲国产成+人+综合| 毛茸茸bbw亚洲人| 国产青草视频在线观看免费影院| 99久久人妻精品免费二区| 丁香花在线观看免费观看图片 | 亚洲高清免费视频| 亚洲国产精品嫩草影院| 亚洲国产亚洲综合在线尤物| 亚洲AV无码乱码国产麻豆| 精品亚洲视频在线观看| 免费a级毛片无码av| 午夜爱爱免费视频| 噼里啪啦电影在线观看免费高清| 啦啦啦完整版免费视频在线观看| 午夜精品一区二区三区免费视频 | 亚洲一区日韩高清中文字幕亚洲| 免费无码又爽又刺激高潮的视频 | 国产成人亚洲综合一区| 亚洲精品欧洲精品| 久久亚洲精品成人777大小说| 亚洲精品无码av人在线观看| 中文字幕亚洲日本岛国片| 免费在线不卡视频| 免费v片在线观看无遮挡| 国产成人aaa在线视频免费观看 | 色视频在线观看免费| 最近中文字幕电影大全免费版| 在线观看黄片免费入口不卡| 黄色视频在线免费观看| 国产精品永久免费视频| 黄色视频在线免费观看| a级毛片视频免费观看| 免费人成毛片动漫在线播放| 亚洲免费视频网站| 麻豆高清免费国产一区| 一个人免费高清在线观看|