定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示
使用场景:遍历的场景,提供如开始、下一个、是否结束、等统一的接口。
实现:创建迭代器接口和聚集抽象类,迭代接口提供:获取第一个元素,下一个元素,是否还有下一个元素的方法。具体聚合抽象类添加创建迭代器方法。最后实现类分别实现
优点:提供聚集类的多种遍历方式,简化聚集类的使用
代码示例:迭代器
/**
* 迭代器接口
* @author liuhao
*
*/
public interface Iterator {
Object next();
boolean hasNext();
}
/**
* 聚合对象抽象类
* @author liuhao
*
*/
public abstract class Aggregate {
public abstract Iterator createIterator();
}
import java.util.ArrayList;
import java.util.List;
/**
* 聚合实现类
* @author liuhao
*
*/
public class ConcreteAggregate extends Aggregate{
private List<Object> items = new ArrayList<Object>();
@Override
public Iterator createIterator() {
return new ConcreteIterator(this);
}
public int count() {
return items.size();
}
public Object get(int index) {
return items.get(index);
}
public boolean add(Object object) {
return items.add(object);
}
}
public class Main {
public static void main(String[] args) {
ConcreteAggregate aggregate = new ConcreteAggregate();
aggregate.add("1");
aggregate.add("2");
aggregate.add("3");
aggregate.add("4");
aggregate.add("5");
Iterator iterator = aggregate.createIterator();
Object o;
while (iterator.hasNext()) {
o = iterator.next();
System.out.println(o);
}
}
}
结果: