Java設(shè)計(jì)模式----迭代器模式

場(chǎng)景

  • 提供一種可以遍歷聚合對(duì)象的方式。又稱(chēng)為游標(biāo)cursor模式
  • 聚合對(duì)象:存儲(chǔ)數(shù)據(jù)
  • 迭代器:遍歷數(shù)據(jù)

結(jié)構(gòu)

迭代器模式

實(shí)現(xiàn)

package iterator;

// 自定義迭代器接口
public interface MyIterator {
    void first();       // 將游標(biāo)指向第一個(gè)
    void next();        // 將游標(biāo)指向下一個(gè)
    boolean hasNext();  // 判斷是否存在下一個(gè)

    boolean isFirst();
    boolean isLast();

    Object getCurrentObject();  // 獲取當(dāng)前游標(biāo)指向的對(duì)象
}
package iterator;

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

// 自定義聚合類(lèi)
public class ConcreteMyAggregte {
    private List<Object> list = new ArrayList<Object>();

    public void addObject(Object o){
        list.add(o);
    }

    public void removeObject(Object o){
        list.remove(o);
    }

    public List<Object> getList() {
        return list;
    }

    public void setList(List<Object> list) {
        this.list = list;
    }

    public MyIterator createIterator(){
        return new ConcreteIterator();
    }

    // 使用內(nèi)部類(lèi)定義迭代器,可以直接使用外部類(lèi)的屬性
    private class ConcreteIterator implements MyIterator{
        private int cursor;         // 定義游標(biāo)用于記錄遍歷時(shí)的位置
        private int size = list.size();
        public void first() {
            cursor = 0;
        }

        public void next() {
            if(cursor < size){
                cursor++;
            }
        }

        public boolean hasNext() {
            return cursor < size;
        }

        public boolean isFirst() {
            return cursor == 0;
        }

        public boolean isLast() {
            return cursor == size-1;
        }

        public Object getCurrentObject() {
            return list.get(cursor);
        }
    }
}

開(kāi)發(fā)中常見(jiàn)場(chǎng)景

  • JDK內(nèi)置的迭代器(List/Set)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容