posts - 66,  comments - 40,  trackbacks - 0

          從集合類的升級聯想到Java適配器模式2007-04-20 來自:java060515  [收藏到我的網摘]

          Historical Collection Classes(JDK1.1 之前)
          提供的容器有Arrays,Vector,Stack,Hashtable,Properties,BitSet。其中定義出一種走訪群集內各元素的標準方式,稱為Enumeration(列舉器)接口,用法如下:
          Vector v=new Vector();
          for (Enumeration enum =v.elements(); enum.hasMoreElements(); ) {
          Object o = enum.nextElement();
          processObject(o);
          }
          而在JDK1.2版本中引入了Iterator接口,新版本的集合對象(HashSet,HashMap,WeakHeahMap,ArrayList,TreeSet,TreeMap, LinkedList)是通過Iterator接口訪問集合元素的。
          例如: List list=new ArrayList();
          for(Iterator it=list.iterator(); it.hasNext(); )
          {
          System.out.println(it.next());
          }
          這樣,如果將老版本的程序運行在新的Java編譯器上就會出錯。因為List接口中已經沒有elements(),而只有iterator()了。那么如何可以使老版本的程序運行在新的Java編譯器上呢?如果不加修改,是肯定不行的,但是修改要遵循“開-閉”原則。
          這時候我想到了Java設計模式中的適配器模式。

          /**//*
          *@author 我為J狂 建立日期 2007-4-18
          *
          */
          package net.blogjava.lzqdiy;

          import java.util.ArrayList;
          import java.util.Enumeration;
          import java.util.Iterator;
          import java.util.List;

          public class NewEnumeration implements Enumeration
          {

          Iterator it;
          public NewEnumeration(Iterator it)
          {
          this.it=it;
          // TODO Auto-generated constructor stub
          }

          public boolean hasMoreElements()
          {
          // TODO Auto-generated method stub
          return it.hasNext();
          }

          public Object nextElement()
          {
          // TODO Auto-generated method stub
          return it.next();
          }
          public static void main(String[] args)
          {
          List list=new ArrayList();
          list.add("a");
          list.add("b");
          list.add("C");
          for(Enumeration e=new NewEnumeration(list.iterator()); e.hasMoreElements(); )
          {
          System.out.println(e.nextElement());
          }
          }
          }
          NewEnumeration是一個適配器類,通過它實現了從Iterator接口到Enumeration接口的適配,這樣我們就可以使用老版本的代碼來使用新的集合對象了。

          posted on 2007-04-22 09:23 happytian 閱讀(254) 評論(0)  編輯  收藏

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


          網站導航:
           
          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          Welcome here, my friend!

          常用鏈接

          留言簿(12)

          隨筆檔案(66)

          文章分類

          文章檔案(63)

          web

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 89350
          • 排名 - 647

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盐池县| 来安县| 高清| 新巴尔虎左旗| 南昌县| 旺苍县| 临颍县| 营山县| 台北县| 福海县| 江华| 英山县| 徐汇区| 武胜县| 黎川县| 固阳县| 永福县| 巢湖市| 葵青区| 永康市| 丹棱县| 安平县| 洪洞县| 灵台县| 察哈| 万年县| 平顶山市| 马关县| 大方县| 金川县| 乌拉特前旗| 湖北省| 鄂托克旗| 余江县| 水富县| 蒲江县| 龙门县| 肇州县| 五原县| 元朗区| 广东省|