跌代器模式
package behaviroal.iterator;
import java.util.List;
import java.util.Vector;
/**
* 跌代器模式
* 迭代器具备一个遍历接口,集合的接口就不必具备遍历接口,简化了集合
* 每一个集合对象都可以有很多不同的迭代器,这些迭代器彼此独立
* 遍历的算法封装在迭代器里,因此迭代的算法可以独立于集合单独变化
*
* 可以顺序地访问一个集合中的元素而不必暴露集合中的内部表象
* @author zhangchy
*
*/
interface IAggregrate{
public Iterator createIterator();
}
class CreateIaggregrate implements IAggregrate{
List objectList = new Vector();
//添加一个元素
public void addElements(Object o){
objectList.add(o);
}
//获得某个索引的值
public Object getElement(int index){
return objectList.get(index);
}
public int size(){
return objectList.size();
}
//获得遍历器
public Iterator createIterator() {
// TODO Auto-generated method stub
return new CreateIterator(this);
}
}
//遍历器接口
interface Iterator{
public void first();
public void next();
public Object currentItem();
public boolean hasNext();
}
//具体遍历器
class CreateIterator implements Iterator{
private int index = 0;
private CreateIaggregrate agg;
public CreateIterator(CreateIaggregrate agg){
this.agg = agg;
}
public Object currentItem(){
// TODO Auto-generated method stub
return agg.getElement(index);
}
public void first() {
// TODO Auto-generated method stub
index = 0;
}
public boolean hasNext() {
// TODO Auto-generated method stub
return index<agg.size();
}
public void next() {
// TODO Auto-generated method stub
index ++;
}
}
public class IteratorPattern {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
CreateIaggregrate agg = new CreateIaggregrate();
agg.addElements("a");
agg.addElements("ab");
agg.addElements("abv");
agg.addElements("acdb");
agg.addElements("afbfbfb");
Iterator it = agg.createIterator();
while(it.hasNext()){
System.out.println(it.currentItem().toString());
it.next();
}
}
}
浙公网安备 33010602011771号