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

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


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

          Welcome here, my friend!

          常用鏈接

          留言簿(12)

          隨筆檔案(66)

          文章分類

          文章檔案(63)

          web

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 89361
          • 排名 - 647

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 克东县| 文登市| 乌拉特中旗| 大新县| 济源市| 门源| 平遥县| 浠水县| 潮州市| 焦作市| 广东省| 临邑县| 井冈山市| 辽阳县| 九龙城区| 广州市| 谢通门县| 来安县| 连南| 木兰县| 名山县| 锡林浩特市| 潼关县| 乌什县| 清水河县| 常德市| 昌吉市| 潜山县| 滨海县| 报价| 清远市| 丹寨县| 印江| 洪泽县| 凤阳县| 五河县| 高阳县| 阿拉尔市| 依兰县| 城市| 岳阳市|