当前位置:天才代写 > tutorial > JAVA 教程 > 从荟萃类的进级遐想到Java适配器模式

从荟萃类的进级遐想到Java适配器模式

2017-11-13 08:00 星期一 所属: JAVA 教程 浏览:648

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接口的适配,这样我们就可以利用老版本的代码来利用新的荟萃工具了。

 

    关键字:

天才代写-代写联系方式