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

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


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

          Welcome here, my friend!

          常用鏈接

          留言簿(12)

          隨筆檔案(66)

          文章分類

          文章檔案(63)

          web

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 89702
          • 排名 - 647

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 武汉市| 东光县| 福安市| 平昌县| 揭东县| 苏尼特右旗| 兖州市| 北川| 高安市| 揭西县| 道孚县| 吐鲁番市| 开封县| 平南县| 雷州市| 高要市| 景德镇市| 宿松县| 五大连池市| 桦甸市| 壶关县| 中宁县| 博兴县| 四平市| 民乐县| 巴东县| 永济市| 遂平县| 阿克苏市| 新宁县| 浮山县| 荆州市| 宝鸡市| 峨山| 寻乌县| 万源市| 黄大仙区| 辽中县| 宜阳县| 阜城县| 阿瓦提县|