迭代器模式的定义,就是提供一种方法访问内聚对象的各个元素信息,然而不暴露该对象的内部表示

其实在 Java或者是C#这样的语言当中已经都把迭代器定义在了内部中,注意:(有集合的地方就有迭代器


// Java内部里面定制好了迭代器,例如:
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
java.util.Iterator<String> iterator2 = list.iterator();
while (iterator2.hasNext()) {
    System.out.println(iterator2.next());
}

运行结果:
这里写图片描述


模拟添加数据,使用迭代器模式完成:

package com.oop.demo1;

/**
 * 定义迭代器抽象类
 * @author Liudeli
 *
 */
public abstract class Iterator {

    /**
     * 查找下一个
     * @return
     */
    public abstract Object next();

    /**
     * 下一个是否存在
     * @return
     */
    public abstract boolean hasNext();

}
package com.oop.demo1;

import java.util.ArrayList;
import java.util.List;

public class IteratorImpl extends Iterator{

    private List<String> list = new ArrayList<String>();
    private int cursor = 0;

    public IteratorImpl(List<String> list) {
        this.list = list;
    }

    public boolean hasNext() {
        if(cursor==list.size()){  
            return false;  
        }  
        return true;  
    }

    public Object next() {
        Object obj = null;  
        if(this.hasNext()){  
            obj = this.list.get(cursor++);  
        }  
        return obj; 
    }
}
package com.oop.demo1;

/**
 * 抽象出存储数据的抽象类
 * @author Liudeli
 *
 */
public abstract class Aggregate {

    /**
     * 抽象添加的行为
     * @param object
     */
    public abstract void add(Object object);

    /**
     * 得到迭代器,迭代器可以去迭代数据
     * @return
     */
    public abstract Iterator iterator();

}
package com.oop.demo1;

import java.util.ArrayList;
import java.util.List;

public class AggregateImpl extends Aggregate{

     private List list = new ArrayList();  

     public void add(Object obj) {      
         list.add(obj);  
     }  

     public Iterator iterator() {  
         return new IteratorImpl(list);  
     }  
}
/**
 * 测试程序(迭代器模式)
 * @author Liudeli
 *
 */
public class Main {

    public static void main(String[] args) {

        /*
        // Java内部里面定制好了迭代器,例如:
        List<String> list = new ArrayList<String>();
        list.add("111");
        list.add("222");
        list.add("333");
        java.util.Iterator<String> iterator2 = list.iterator();
        while (iterator2.hasNext()) {
            System.out.println(iterator2.next());
        }
        */

        Aggregate aggregate = new AggregateImpl();
        aggregate.add("旺财");
        aggregate.add("痞子阿三");
        aggregate.add("小黄");
        aggregate.add("史珍香");

        Iterator iterator = aggregate.iterator();
        while (iterator.hasNext()) {
            String name = iterator.next().toString();
            System.out.println(name);
        }
    }

运行结果:
这里写图片描述


这里写图片描述


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006