`
pan_java
  • 浏览: 287930 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
适配器模式 :将一个类的接口,转换成客户期望的另一个接口.适配器上原本接口不兼容的类可以合作无间.

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

	}

}




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics