posts - 66,  comments - 40,  trackbacks - 0

          從集合類的升級聯(lián)想到Java適配器模式2007-04-20 來自:java060515  [收藏到我的網(wǎng)摘]

          Historical Collection Classes(JDK1.1 之前)
          提供的容器有Arrays,Vector,Stack,Hashtable,Properties,BitSet。其中定義出一種走訪群集內(nèi)各元素的標準方式,稱為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接口中已經(jīng)沒有elements(),而只有iterator()了。那么如何可以使老版本的程序運行在新的Java編譯器上呢?如果不加修改,是肯定不行的,但是修改要遵循“開-閉”原則。
          這時候我想到了Java設(shè)計模式中的適配器模式。

          /**//*
          *@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是一個適配器類,通過它實現(xiàn)了從Iterator接口到Enumeration接口的適配,這樣我們就可以使用老版本的代碼來使用新的集合對象了。

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

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


          網(wǎng)站導航:
           
          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          Welcome here, my friend!

          常用鏈接

          留言簿(12)

          隨筆檔案(66)

          文章分類

          文章檔案(63)

          web

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 89693
          • 排名 - 647

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 建昌县| 台山市| 竹溪县| 广宗县| 香格里拉县| 昆山市| 项城市| 湾仔区| 仪征市| 渑池县| 恩施市| 吉安市| 广水市| 万载县| 滕州市| 新晃| 冕宁县| 原阳县| 襄垣县| 梁河县| 长兴县| 青铜峡市| 旺苍县| 廊坊市| 梓潼县| 宜兰县| 长兴县| 洪江市| 尼勒克县| 分宜县| 汉川市| 达州市| 昌都县| 阜康市| 正蓝旗| 安国市| 卓尼县| 千阳县| 泸溪县| 龙岩市| 明溪县|