迭代器模式的定义,就是提供一种方法访问内聚对象的各个元素信息,然而不暴露该对象的内部表示
其实在 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
                    
                
                
            
        
浙公网安备 33010602011771号