Android設(shè)計(jì)模式之(13)----迭代器模式

迭代器模式

迭代器模式屬于行為模式.

主要用于解決對一個(gè)聚合對象中的所有元素的獲取,但是同時(shí)又不會(huì)暴露該對象的內(nèi)部細(xì)節(jié)悼嫉。

主要分為迭代器接口,具體實(shí)現(xiàn)迭代器,容器,具體實(shí)現(xiàn)的容器

使用場景

  • 訪問一個(gè)對象內(nèi)部的元素而不暴露內(nèi)部細(xì)節(jié)
  • 要獲取多個(gè)對象的內(nèi)部元素,提供統(tǒng)一的接口訪問

代碼示例

(一) 迭代器接口

public interface Iterator {
    boolean hasNext();

    Object next();
}

(二) 具體迭代器

public class ConcreteIterator implements Iterator {

    private int position;
    private List list = new ArrayList();

    public ConcreteIterator(List list){
        this.list = list;
    }

    @Override
    public boolean hasNext() {
        if (position == list.size()) {
            return false;
        } else {
            return true;
        }
    }

    @Override
    public Object next() {
        Object obj = null;
        if(this.hasNext()){
            obj = this.list.get(position++);
        }
        return obj;
    }
}

(三)容器接口

public interface Aggregate {
    void add(Object obj);

    void remove(Object obj);

    Iterator iterator();
}

(四)具體的容器

public class ConcreteAggregate implements Aggregate {

    private List list = new ArrayList();

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

    public Iterator iterator() {
        return new ConcreteIterator(list);
    }

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

}

調(diào)用方式

   Aggregate aggregate=new ConcreteAggregate();
        aggregate.add("1");
        aggregate.add("2");
        aggregate.add("3");
        aggregate.add("4");
        aggregate.add("5");
        aggregate.add("6");
        Iterator iterator = aggregate.iterator();
        while (iterator.hasNext()){
            System.out.println("\n"+iterator.next());
        }

顯示結(jié)果

1

2

3

4

5

6

總結(jié)

  • 優(yōu)點(diǎn)

    • 簡化遍歷操作,特別是對于對象的元素遍歷獲取
    • 外部調(diào)用只需要得到迭代器即可,內(nèi)部具體遍歷方式不需要關(guān)心,適用于復(fù)雜遍歷
  • 缺點(diǎn)

    • 簡單遍歷反而增加操作,例如數(shù)組和有序列表
    • 增加了一部分類

github地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹋凝,一起剝皮案震驚了整個(gè)濱河市总棵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伐割,老刑警劉巖刃唤,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尚胞,死亡現(xiàn)場離奇詭異帜慢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)躬柬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門抽减,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颠锉,你說我怎么就攤上這事史汗。” “怎么了瓷蛙?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵戈毒,是天一觀的道長。 經(jīng)常有香客問我姥宝,道長恐疲,這世上最難降的妖魔是什么套么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任胚泌,我火速辦了婚禮肃弟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘穷缤。我一直安慰自己箩兽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布身坐。 她就那樣靜靜地躺著落包,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涯鲁。 梳的紋絲不亂的頭發(fā)上有序,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音幢踏,去河邊找鬼许师。 笑死,一個(gè)胖子當(dāng)著我的面吹牛搭幻,可吹牛的內(nèi)容都是我干的逞盆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼俯逾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了桌肴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤水醋,失蹤者是張志新(化名)和其女友劉穎彪置,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宫蛆,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡的猛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年卦尊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舌厨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躏哩,死狀恐怖揉燃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情正驻,我是刑警寧澤抢腐,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響啼染,放射性物質(zhì)發(fā)生泄漏焕梅。R本人自食惡果不足惜形纺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一逐样、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挪捕,春花似錦争便、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至发绢,卻和暖如春垄琐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狸窘。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工翻擒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人韭寸。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓恩伺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親凰荚。 傳聞我的和親對象是個(gè)殘疾皇子燃观,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1 場景問題# 1.1 工資表數(shù)據(jù)的整合## 考慮這樣一個(gè)實(shí)際應(yīng)用:整合工資表數(shù)據(jù)。 這個(gè)項(xiàng)目的背景是這樣的脊框,項(xiàng)目...
    七寸知架構(gòu)閱讀 2,550評論 0 53
  • 設(shè)計(jì)模式匯總 一浇雹、基礎(chǔ)知識(shí) 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 3,944評論 1 15
  • 目錄 本文的結(jié)構(gòu)如下: 引言 什么是迭代器模式 模式的結(jié)構(gòu) 典型代碼 代碼示例 優(yōu)點(diǎn)和缺點(diǎn) 適用環(huán)境 模式應(yīng)用 一...
    w1992wishes閱讀 517評論 0 1
  • 七月的陽光落下昭灵,依靠樹干的知了如燙傷似的拼命叫喊烂完。程宇挑著兩擔(dān)貨物步速均勻的走者诵棵。 程宇是個(gè)賣雜貨的貨郎,十六...
    凡久匠閱讀 418評論 3 0
  • 1. 像人們過完一個(gè)油膩春節(jié)晦攒,眼下時(shí)代似乎也開始厭倦了滿屏裝萌扮傻的綜藝節(jié)目闽撤,鬧哄哄你方唱罷我登場。 從網(wǎng)絡(luò)到各衛(wèi)...
    楊矗矗閱讀 774評論 0 5