适配器模式在开源代码中的应用

2020-07-22

适配器模式的作用:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

开源代码中,哪些地方用到了适配器模式呢?

 

案例一

java.util.Enumeration JDK 1.0 提供用于遍历容器类的接口,但是一个公认的设计失误,所以 JDK 1.2 对其进行了重构,新增 Iterator 接口去迭代容器类。

JDK 为了保证向后兼容,就在容器工具类 java.util.Collections 的 enumeration 方法中使用了适配器模式,用 Collection#iterator() 构造 Enumeration 对象,源码如下:

public class Collections {
    
    private Collections() {
    }

   /**
     * Returns an enumeration over the specified collection.  This provides
     * interoperability with legacy APIs that require an enumeration
     * as input.
     *
     * @param  <T> the class of the objects in the collection
     * @param c the collection for which an enumeration is to be returned.
     * @return an enumeration over the specified collection.
     * @see Enumeration
     */
    public static <T> Enumeration<T> enumeration(final Collection<T> c) {
    	return new Enumeration<T>() {
    		private final Iterator<T> i = c.iterator();
    
    		public boolean hasMoreElements() {
    			return i.hasNext();
    		}
    
    		public T nextElement() {
    			return i.next();
    		}
    	};
    }

}

 

ConstXiong 备案号:苏ICP备16009629号-3