首页 > 其他 > 详细

迭代模式

时间:2017-05-04 11:49:43      阅读:251      评论:0      收藏:0      [点我收藏+]

定义:

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

应用场景:

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=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());
        }
    }

}

 

 
 

 

迭代模式

原文:http://www.cnblogs.com/zhuangxr/p/6806071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!