* 迭代模式 : 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴漏该独享的内部表示
* Iterator: 迭代器接口 。 定义访问和遍历元素的接口
* ConcreteIterator: 具体的迭代器的实现对象。实现对象聚合对象的遍历,并跟踪便利时的当前位置
* Aggregate: 聚合对象。 定义创建相应迭代器对象的接口。
* ConcreteAggregate: 具体聚合对象。实现创建爱你相应的迭代器对象
* Iterator: 迭代器接口 。 定义访问和遍历元素的接口
* ConcreteIterator: 具体的迭代器的实现对象。实现对象聚合对象的遍历,并跟踪便利时的当前位置
* Aggregate: 聚合对象。 定义创建相应迭代器对象的接口。
* ConcreteAggregate: 具体聚合对象。实现创建爱你相应的迭代器对象
public interface Iterator {
public void first();
public void next();
public boolean isDone();
public Object CurrentItem();
}
public abstract class Aggregate {
public abstract Iterator createIterator();
}
public class ConcreteAggregate extends Aggregate{
private String [] as = null;
public ConcreteAggregate (String [] ss){
this.as = ss;
}
public Iterator createIterator() {
return new ConcreteIterator(this);
}
public Object get(int index){
Object retObj = null;
if(index < as.length){
retObj = as[index];
}
return retObj;
}
public int size(){
return this.as.length;
}
}
public class ConcreteIterator implements Iterator{
private ConcreteAggregate aggregate;
private int index = -1;
public ConcreteIterator(ConcreteAggregate aggregate){
this.aggregate = aggregate;
}
@Override
public Object CurrentItem() {
return this.aggregate.get(index);
}
@Override
public void first() {
index = 0;
}
@Override
public boolean isDone() {
if(index < this.aggregate.size()){
return true;
}
return false;
}
@Override
public void next() {
if(index<this.aggregate.size()){
index = index+1;
}
}
}
public class Client {
static String [] names = {"张三","李四","王五"};
public static void main(String[] args) {
Aggregate aggregate = new ConcreteAggregate(names);
Iterator it = aggregate.createIterator();
it.first();
while(it.isDone()){
Object obj = it.CurrentItem();
System.out.println(obj);
it.next();
}
new ArrayList().iterator();
}
}