首页 > 代码库 > 迭代模式

迭代模式

定义:

提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示

应用场景:

1. 访问一个聚合对象的内容而无需暴露它的内部表示(当不想暴漏对象内部的数据和结构,通过实现迭代器,将数据放到迭代器中提供给使用者,符合类单一原则和开闭原则)
2.支持对聚合对象的多种遍历
3.为遍历不同的聚合结构提供一个统一的接口(但出现需要获取不同对象的数据时,每个对象数据格式不一样,此刻可以要求每个对象实现迭代器,这样达到统一)
uml:
技术分享
代码实例:
public interface Iterator {
    public boolean hasNext();

    public Object next();

    public boolean remove();

}

public class MyIterator implements Iterator {
    String[] dataArray = null;
    int point = 0;
    int size = 0;

    public MyIterator(String[] dataArray, int size) {
        this.dataArray = dataArray.clone();
        this.size = size;
    }

    @Override
    public boolean hasNext() {

        return point < size ? true : false;
    }

    @Override
    public Object next() {
        // TODO Auto-generated method stub
        if (point <= size) {
            point++;

            return dataArray[point - 1];

        } else {
            throw new NullPointerException();
        }

    }

    @Override
    public boolean remove() {
        // TODO Auto-generated method stub
        return false;
    }

}


public interface Iaggregate {
    public Iterator getIterator();

}
public class AggregateA implements Iaggregate{
    static String [] data=http://www.mamicode.com/new String[100];
    static{
        data[0]="a";
        data[1]="b";
        data[2]="c";
        data[3]="d";
        data[4]="e";
        data[5]="f";
        data[6]="g";
    }

    @Override
    public Iterator getIterator() {
        // TODO Auto-generated method stub
        return new MyIterator(data, 7);
    }

}

public class test {
    public static void main(String[] args) {
        Iterator it=new AggregateA().getIterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }

}

 

 
 

 

迭代模式