新旧接口的转换,对外暴露的是新接口,实际运行的是旧实现
三步口诀
- 新增适配的类,实现新接口,也就是对外暴露的方法
- 添加旧对象的引用,赋值给新增适配的类
- 对外暴露的方法调用旧对象的方法
例子
对旧接口Enumeration适配
import java.util.Enumeration;
import java.util.Iterator;
public class EnumerationAdapter<E> implements Iterator<E> {
private Enumeration<E> enumeration;
public EnumerationAdapter(Enumeration<E> enumeration) {
this.enumeration = enumeration;
}
@Override
public boolean hasNext() {
return enumeration.hasMoreElements();
}
@Override
public E next() {
return enumeration.nextElement();
}
@Override
public void remove() {
throw new UnsupportedOperationException("remove");
}
}
public class EnumerationAdapterTest {
public static void main(String[] args) {
Vector<String> vector = new Vector<String>();
vector.addElement("111");
vector.addElement("222");
vector.addElement("333");
Enumeration<String> elements = vector.elements();
Iterator<String> iterator = new EnumerationAdapter<String>(elements);
while (iterator.hasNext()) {
String object = (String) iterator.next();
System.out.println(object);
}
}
}