根据GoF, 迭代器模式用于“顺序访问聚合对象的元素, 而不会暴露其底层实现”。
迭代器模式也称为游标。
【迭代器模式】在集合框架中, 我们现在使用的是Iterator, 而不是Enumeration。
java.util.Iterator接口使用迭代器设计模式。
迭代器模式的优势
- 它支持遍历集合的变体。
- 它简化了集合的接口。
- 当你想访问对象集合而不暴露其内部表示形式时。
- 集合中需要支持多个遍历对象时。
让我们通过上面的UML图了解迭代器模式模式的示例。
用于迭代器模式的UML:
文章图片
以上UML的实现 步骤1 创建Iterartor接口。
public interface Iterator {
public boolean hasNext();
public Object next();
}
第2步 创建一个容器接口。
public interface Container {
public Iterator getIterator();
}// End of the Iterator interface.
第三步 创建一个CollectionofNames类, 该类将实现Container接口。
public class CollectionofNames implements Container {
public String name[]={"Ashwani Rajput", "Soono Jaiswal", "Rishi Kumar", "Rahul Mehta", "Hemant Mishra"};
@Override
public Iterator getIterator() {
return new CollectionofNamesIterate() ;
}
private class CollectionofNamesIterate implements Iterator{
int i;
@Override
public boolean hasNext() {
if (i<
name.length){
return true;
}
return false;
}
@Override
public Object next() {
if(this.hasNext()){
return name[i++];
}
return null;
}
}
}
}
步骤4 创建一个IteratorPatternDemo类。
public class IteratorPatternDemo {
public static void main(String[] args) {
CollectionofNames cmpnyRepository = new CollectionofNames();
for(Iterator iter = cmpnyRepository.getIterator();
iter.hasNext();
){
String name = (String)iter.next();
System.out.println("Name : " + name);
}
}
}
输出量
Name : Ashwani Rajput
Name : Soono Jaiswal
Name : Rishi Kumar
Name : Rahul Mehta
Name : Hemant Mishra