作用:是对一个集合的遍历。
JDK,中Collection,的iterator遍历,就是该模式典型例子。
该模式(例举List),首先不会暴露内部结构(我们不知道list内部的结构),可以透明的访问,比如get(index)等。
迭代器角色:
public interface Iterator{
public boolean hasNext();
public Object next();
}
具体迭代器角色:
public class concreteIterator implement Iterator{
private List list = null;
private int index;
public ConcreteIterator(List list){
super();
this.list = list;
}
public void hasNext(){
if(index>=list.getSize()){
return false;
}else{
return true;
}
}
public Object next(){
Object object = list.get(index);
index++;
return object;
}
}
public interface List{
public void add(Object object);
public void get(int index);
public Iterator iterator();
public int getSize();
}
public class ConcreteList implement List{
private Object[] list;
private int size=0;
private int index=0;
public ConcreteList(){
index = 0;
size = 0;
list = new Object[100];
}
public void add(Object obj){
list[index++] = obj;
size++;
}
public Object get(int index){
return list(index);
}
public int getSize(){
return size;
}
public Iterator iterator(){
return ConcreteIterator(this);
}
}
上面就是list 迭代器的实现。
我们可以自定义迭代器,去以自己想要的方式去遍历。
缺点:就是比较繁琐。
我们一般写一个自己的集合,就需要提供相应的迭代器。