适配器模式 :将一个类的接口,转换成客户期望的另一个接口.适配器上原本接口不兼容的类可以合作无间.
项目比较旧的代码,迭代采用Enumeration
项目比较旧的代码,迭代采用Iterator
Enumeration 转换成 Iterator 的适配器
测试方法
项目比较旧的代码,迭代采用Enumeration
public class EnumerationTest {
public Enumeration getEnum(Vector list){
Enumeration e = list.elements();
return e;
}
}
项目比较旧的代码,迭代采用Iterator
public class IteratorTest {
public Iterator getIter(Collection list) {
Iterator iterator = list.iterator();
return iterator;
}
}
Enumeration 转换成 Iterator 的适配器
public class EnumerationIterator implements Iterator {
public Enumeration enumeration;
public EnumerationIterator(Enumeration enumeration) {
this.enumeration = enumeration;
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return enumeration.hasMoreElements();
}
@Override
public Object next() {
// TODO Auto-generated method stub
return enumeration.nextElement();
}
//由于Enumeration没有相关删除方法,所以执行时抛出异常
@Deprecated
public void remove() {
// TODO Auto-generated method stub
throw new RuntimeException();
}
}
测试方法
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EnumerationTest et = new EnumerationTest();
Vector vector = new Vector();
vector.add(1);
vector.add(2);
vector.add(3);
vector.add(4);
Enumeration enumeration = et.getEnum(vector);
//使用适配器转换成Iterator
EnumerationIterator ei = new EnumerationIterator(enumeration);
display(ei);
}
public static void display(Iterator iterator) {
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}