WEB开发网
开发学院软件开发Java hand first 设计模式 -适配器模式 阅读

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

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示:适配器模式 :将一个类的接口,转换成客户期望的另一个接口.适配器上原本接口不兼容的类可以合作无间. 项目比较旧的代码,迭代采用Enumeration Java代码publicclassEnumerationTest{publicEnumerationgetEnum(Vectorlist){Enumeratione=li

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

项目比较旧的代码,迭代采用Enumeration

Java代码   

public class EnumerationTest { 
 
 public Enumeration getEnum(Vector list){ 
  
 Enumeration e = list.elements(); 
  
 return e; 
 } 
 
}

项目比较旧的代码,迭代采用Iterator

Java代码   

public class IteratorTest { 
 
 public Iterator getIter(Collection list) { 
 
 Iterator iterator = list.iterator(); 
  
 return iterator; 
 
 } 
 
}

Enumeration 转换成 Iterator  的适配器

Java代码   

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(); 
 
 } 
 
}

测试方法

Java代码   

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()); 
 } 
 
 } 
 
}

Tags:hand first 设计模式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接