Java Iterator Pattern(迭代器模式)

迭代器模式(Iterator Pattern)是 Java 和 .Net 編程環(huán)境中非常常用的設(shè)計模式。這種模式用于順序訪問集合對象的元素好芭,不需要知道集合對象的底層表示。迭代器模式屬于行為型模式冲呢。

關(guān)鍵代碼:定義接口:hasNext, next栓撞。

優(yōu)點(diǎn): 1、它支持以不同的方式遍歷一個聚合對象碗硬。 2瓤湘、迭代器簡化了聚合類。 3恩尾、在同一個聚合上可以有多個遍歷弛说。 4、在迭代器模式中翰意,增加新的聚合類和迭代器類都很方便木人,無須修改原有代碼信柿。
缺點(diǎn):由于迭代器模式將存儲數(shù)據(jù)和遍歷數(shù)據(jù)的職責(zé)分離,增加新的聚合類需要對應(yīng)增加新的迭代器類醒第,類的個數(shù)成對增加渔嚷,這在一定程度上增加了系統(tǒng)的復(fù)雜性。

  1. 創(chuàng)建接口
/**
 * 1. 創(chuàng)建接口
 * @author mazaiting
 */
public interface Iterator {
    /**
     * 是否有一個
     */
    boolean hasNext();
    /**
     * 下一個對象
     * @return
     */
    Object next();
}


/**
 * 1. 創(chuàng)建接口
 * @author mazaiting
 */
public interface Container {
    /**
     * 獲取迭代器
     */
    public Iterator getIterator();
}
  1. 創(chuàng)建實現(xiàn)了 Container 接口的實體類稠曼。該類有實現(xiàn)了 Iterator 接口的內(nèi)部類 NameIterator形病。
/**
 * 2. 創(chuàng)建實現(xiàn)了 Container 接口的實體類。該類有實現(xiàn)了
 *  Iterator 接口的內(nèi)部類 NameIterator霞幅。
 * @author mazaiting
 */
public class NameRepository implements Container{
    public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};
    public Iterator getIterator() {
        return new NameIterator();
    }
    
    private class NameIterator implements Iterator{

        int index = 0;
        
        public boolean hasNext() {
            if (index < names.length) {
                return true;
            }
            return false;
        }

        public Object next() {
            if (this.hasNext()) {
                return names[index++];
            }
            return null;
        }
        
    }

}
  1. 使用 NameRepository 來獲取迭代器漠吻,并打印名字。
/**
 * 3. 使用 NameRepository 來獲取迭代器司恳,并打印名字途乃。
 * @author mazaiting
 */
public class Client {
    public static void main(String[] args) {
        NameRepository nameRepository = new NameRepository();
        for (Iterator iterator = nameRepository.getIterator();iterator.hasNext();) {
            String name = (String) iterator.next();
            System.out.println("Name: " + name);
        }
    }
}
  1. 打印結(jié)果
            Name: Robert
            Name: John
            Name: Julie
            Name: Lora
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扔傅,隨后出現(xiàn)的幾起案子耍共,更是在濱河造成了極大的恐慌,老刑警劉巖猎塞,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件划提,死亡現(xiàn)場離奇詭異,居然都是意外死亡邢享,警方通過查閱死者的電腦和手機(jī)鹏往,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骇塘,“玉大人伊履,你說我怎么就攤上這事】钗ィ” “怎么了唐瀑?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長插爹。 經(jīng)常有香客問我哄辣,道長,這世上最難降的妖魔是什么赠尾? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任力穗,我火速辦了婚禮,結(jié)果婚禮上气嫁,老公的妹妹穿的比我還像新娘当窗。我一直安慰自己,他們只是感情好寸宵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布崖面。 她就那樣靜靜地躺著元咙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巫员。 梳的紋絲不亂的頭發(fā)上庶香,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機(jī)與錄音简识,去河邊找鬼赶掖。 笑死,一個胖子當(dāng)著我的面吹牛财异,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唱遭,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼戳寸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拷泽?” 一聲冷哼從身側(cè)響起疫鹊,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎司致,沒想到半個月后拆吆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脂矫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年枣耀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庭再。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡捞奕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拄轻,到底是詐尸還是另有隱情颅围,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布恨搓,位于F島的核電站院促,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏斧抱。R本人自食惡果不足惜常拓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辉浦。 院中可真熱鬧墩邀,春花似錦、人聲如沸盏浙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至竹海,卻和暖如春慕蔚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斋配。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工孔飒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艰争。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓坏瞄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親甩卓。 傳聞我的和親對象是個殘疾皇子鸠匀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

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

  • 1 場景問題# 1.1 工資表數(shù)據(jù)的整合## 考慮這樣一個實際應(yīng)用:整合工資表數(shù)據(jù)。 這個項目的背景是這樣的逾柿,項目...
    七寸知架構(gòu)閱讀 2,537評論 0 53
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理缀棍,服務(wù)發(fā)現(xiàn),斷路器机错,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 設(shè)計模式匯總 一爬范、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 3,922評論 1 15
  • 目錄 本文的結(jié)構(gòu)如下: 引言 什么是迭代器模式 模式的結(jié)構(gòu) 典型代碼 代碼示例 優(yōu)點(diǎn)和缺點(diǎn) 適用環(huán)境 模式應(yīng)用 一...
    w1992wishes閱讀 513評論 0 1
  • “師兄弱匪,你帶著你的劍走吧青瀑。” “師妹萧诫,你此話何意狱窘?你明知此處的封印是由你我一陰一陽雙劍合力而成。我的劍性剛為主财搁,你...
    丶一直很安靜丨閱讀 270評論 2 1