行為型模式之迭代器模式

迭代器模式

迭代器模式
/**
 * 迭代器模式
 * 提供一種方法訪問一個容器對象中各個元素,而又不暴露對象內部的細節(jié)。
 *
 * 迭代器模式涉及4個角色:
 * 1.抽象迭代器角色 (定義訪問和遍歷元素的接口)
 * 2.具體迭代器角色 (實現(xiàn)Iterator接口,完成元素遍歷)
 * 3.抽象聚合(提供創(chuàng)建迭代器的接口)
 * 4.具體聚合 (創(chuàng)建出容納迭代器的對象)
 */
public class IteratorPattern {

    //抽象迭代器角色
    interface Iterator{
        Object next();
        boolean hasNext();
    }
    //具體迭代器角色
    class ConcreteIterator implements Iterator{
        private ConcreteAggregate agg;
        private int index;
        private int size;

        public ConcreteIterator(ConcreteAggregate agg) {
            this.agg = agg;
            this.index = 0;
            this.size = agg.size();
        }

        @Override
        public Object next() {
            if(index < size)
                return agg.getElement(index);
            else
                return null;
        }

        @Override
        public boolean hasNext() {
            return index < size;
        }
    }
    //抽象聚合
    interface Aggregate{
        void add(Object obj);
        Iterator createIterator();
    }

    //具體聚合
    class ConcreteAggregate implements Aggregate{
        private Vector vector = new Vector();
        public void add(Object obj){
            this.vector.add(obj);
        }
        public Object getElement(int index){
            if(index < vector.size()){
                return vector.get(index);
            }else
                return null;
        }
        public int size (){
            return this.vector.size();
        }
        public Iterator createIterator(){
            return new ConcreteIterator(this);
        }
    }

    public void main(String[] args) {
        Aggregate agg = new ConcreteAggregate();
        agg.add("1");
        agg.add("2");
        agg.add("3");
        //遍歷
        Iterator iterator = agg.createIterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容