论坛首页 Java企业应用论坛

hand first 设计模式 -适配器模式

浏览 1679 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-29  
适配器模式 :将一个类的接口,转换成客户期望的另一个接口.适配器上原本接口不兼容的类可以合作无间.

项目比较旧的代码,迭代采用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());
		}

	}

}




论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics