快速业务通道

从集合类的升级联想到Java适配器模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25

从集合类的升级联想到Java适配器模式

时间:2007-05-30

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 stubreturn it.hasNext();}

public Object nextElement(){// TODO Auto-generated method stubreturn 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接口的适配,这样我们就可以使用老版本的代码来使用新的集合对象了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号