主要就是实现开始,下一个,什么时候结束,当前哪一项.
package com.zwy;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/*提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露改对象的内部表示.
* 注:当你要访问一个对象的聚集对象,而不管这些对象时什么时候都需要遍历的时候,你就应该考虑迭代器模式,
* 主要就是为不同的聚集结构提供如开始,下一个,什么时候结束,当前哪一项等统一接口.
* */
public class IteratorTest {
public static void main(String[] args) {
concreteArray array = new concreteArray();
array.add("zhang san");
array.add("li si");
Iterator iterator = array.create();
while(!iterator.isDone()){
System.out.println(iterator.CurrentItem());
iterator.Next();
}
}
}
abstract interface Iterator {
public abstract Object First();
public abstract Object Next();
public abstract boolean isDone();
public abstract Object CurrentItem();
}
abstract class createIterator {
public abstract Iterator create();
}
class concreteArray extends createIterator {
List<String> lists = new ArrayList<String>();
@Override
public Iterator create() {
return new myArray(lists);
}
public void add(String i) {
lists.add(i);
}
}
class myArray implements Iterator {
List<?> list ;
int cur = -1;
public myArray(List<?> list){
this.list = list;
if(list.size() > 0){
cur = 0;
}
}
@Override
public Object First() {
return list.get(0);
}
@Override
public Object Next() {
if(cur < list.size())
return list.get(cur++);
return null;
}
@Override
public boolean isDone() {
if(cur == list.size())
return true;
return false;
}
@Override
public Object CurrentItem() {
if(cur < list.size())
return list.get(cur);
return null;
}
}