码迷,mamicode.com
首页 > 其他好文 > 详细

迭代模式

时间:2017-05-04 12:02:17      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:log   static   实例   rri   ++   支持   except   system   generated   

定义:

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

应用场景:

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

}

 

 
 

 

迭代模式

标签:log   static   实例   rri   ++   支持   except   system   generated   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!