目的:
提供一种方法顺序访问或者遍历一个聚合对象中的各个元素,且不希望暴露该对象的内部结构。
一、设计
1. 因为是聚合对象,所以设计的这个类应该使用类似list这样的结构体存储聚合对象;
2.迭代器应该是通用的,适用于各种类型的聚合对象,所以设计的类应该是模板类型;
3.还需要对外提供统一的访问接口,以及获取当前元素,递增到下一个元素,判断是否末尾元素。
interface MyIterator<T>{
void next();
boolean hasNext();
T getItem();
}
public class Test<T>{
private List<T> list = new ArrayList<T>();
private int i = 0;
public void add(T item){
list.add(item);
}
public MyIterator getIterator(){
return new TestIterator();
}
class TestIterator implements MyIterator<T>{
public void next(){
i++;
}
public boolean hasNext(){
return (i >= list.size())? false:true;
}
public T getItem(){
return list.get(i);
}
}
}
二、使用
Test<String> test = new Test<String>();
test.add("1");
test.add("2");
test.add("3");
test.add("4");
test.add("5");
MyIterator iterator = test.getIterator();
while(iterator.hasNext()){
String item = (String)iterator.getItem();
Log.d(TAG,"item:"+item);
iterator.next();
}