亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java設(shè)計(jì)模式之迭代模式(Iterator模式)介紹

 更新時(shí)間:2015年03月11日 09:51:49   投稿:junjie  
這篇文章主要介紹了Java設(shè)計(jì)模式之迭代模式(Iterator模式)介紹,本文用一個(gè)老師點(diǎn)名的現(xiàn)象描述了迭代模式的使用,需要的朋友可以參考下

上了這么多年學(xué),我發(fā)現(xiàn)一個(gè)問(wèn)題,好象老師都很喜歡點(diǎn)名,甚至點(diǎn)名都成了某些老師的嗜好,一日不點(diǎn)名,就飯吃不香,覺(jué)睡不好似的,我就覺(jué)得很奇怪,你的課要是講的好,同學(xué)又怎么會(huì)不來(lái)聽(tīng)課呢,殊不知:“誤人子弟,乃是犯罪!”啊。

好了,那么我們現(xiàn)在來(lái)看老師這個(gè)點(diǎn)名過(guò)程是如何實(shí)現(xiàn)吧:
1、老規(guī)矩,我們先定義老師(Teacher)接口類:

復(fù)制代碼 代碼如下:

public interface Teacher {
    public Iterator createIterator(); //點(diǎn)名
}

2、具體的老師(ConcreteTeacher)類是對(duì)老師(Teacher)接口的實(shí)現(xiàn):
復(fù)制代碼 代碼如下:

public class ConcreteTeacher implements Teacher{
    private Object[] present = {"張三來(lái)了","李四來(lái)了","王五沒(méi)來(lái)"}; //同學(xué)出勤集合
    public Iterator createIterator(){
        return new ConcreteIterator(this); //新的點(diǎn)名
    }
    public Object getElement(int index){ //得到當(dāng)前同學(xué)的出勤情況
        if(index<present.length){
            return present[index];
        }
        else{
            return null;
        }
    }
    public int getSize(){
        return present.length; //得到同學(xué)出勤集合的大小,也就是說(shuō)要知道班上有多少人
    }
}

3、定義點(diǎn)名(Iterator)接口類:
復(fù)制代碼 代碼如下:

public interface Iterator {
    void first(); //第一個(gè)
    void next(); //下一個(gè)
    boolean isDone(); //是否點(diǎn)名完畢
    Object currentItem(); //當(dāng)前同學(xué)的出勤情況
}

4、具體的點(diǎn)名(ConcreteIterator)類是對(duì)點(diǎn)名(Iterator)接口的實(shí)現(xiàn):
復(fù)制代碼 代碼如下:

public class ConcreteIterator implements Iterator{
    private ConcreteTeacher teacher;
    private int index = 0;
    private int size = 0;
    public ConcreteIterator(ConcreteTeacher teacher){
        this.teacher = teacher;
        size = teacher.getSize(); //得到同學(xué)的數(shù)目
        index = 0;
    }
    public void first(){ //第一個(gè)
        index = 0;
    }
    public void next(){ //下一個(gè)
        if(index<size){
            index++;
        }
    }
    public boolean isDone(){ //是否點(diǎn)名完畢
        return (index>=size);
    }
    public Object currentItem(){ //當(dāng)前同學(xué)的出勤情況
        return teacher.getElement(index);
    }
}

5、編寫(xiě)測(cè)試類

復(fù)制代碼 代碼如下:

public class Test {
    private Iterator it;
    private Teacher teacher = new ConcreteTeacher();
    public void operation(){
        it = teacher.createIterator(); //老師開(kāi)始點(diǎn)名
        while(!it.isDone()){ //如果沒(méi)點(diǎn)完
            System.out.println(it.currentItem().toString()); //獲得被點(diǎn)到同學(xué)的情況
            it.next(); //點(diǎn)下一個(gè)
        }
    }
    public static void main(String agrs[]){
        Test test = new Test();
        test.operation();
    }
}

6、說(shuō)明

A:定義:Iterator模式可以順序的訪問(wèn)一個(gè)聚集中的元素而不必暴露聚集的內(nèi)部情況。
B:在本例中,老師(Teacher)給出了創(chuàng)建點(diǎn)名(Iterator)對(duì)象的接口,點(diǎn)名(Iterator)定義了遍歷同學(xué)出勤情況所需的接口。
C:Iterator模式的優(yōu)點(diǎn)是當(dāng)(ConcreteTeacher)對(duì)象中有變化是,比如說(shuō)同學(xué)出勤集合中有加入了新的同學(xué),或減少同學(xué)時(shí),這種改動(dòng)對(duì)客戶端是沒(méi)有影響的。

相關(guān)文章

  • java設(shè)計(jì)模式之工廠方法模式

    java設(shè)計(jì)模式之工廠方法模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之工廠方法模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(38)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(38)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • SpringBoot如何實(shí)現(xiàn)持久化登錄狀態(tài)獲取

    SpringBoot如何實(shí)現(xiàn)持久化登錄狀態(tài)獲取

    這篇文章主要介紹了SpringBoot 如何實(shí)現(xiàn)持久化登錄狀態(tài)獲取,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring Cache + Caffeine的整合與使用示例詳解

    Spring Cache + Caffeine的整合與使用示例詳解

    對(duì)于一些項(xiàng)目里需要對(duì)數(shù)據(jù)庫(kù)里的某些數(shù)據(jù)一直重復(fù)請(qǐng)求的,且這些數(shù)據(jù)基本是固定的,在這種情況下,可以借助簡(jiǎn)單使用本地緩存來(lái)緩存這些數(shù)據(jù),本文介紹一下Spring Cache和Caffeine的使用,感興趣的朋友一起看看吧
    2023-12-12
  • Java通過(guò)接口實(shí)現(xiàn)匿名類的實(shí)例代碼

    Java通過(guò)接口實(shí)現(xiàn)匿名類的實(shí)例代碼

    這篇文章介紹了Java通過(guò)接口實(shí)現(xiàn)匿名類的實(shí)例代碼,有需要的朋友可以參考一下
    2013-10-10
  • J2ME 程序開(kāi)發(fā)注意要點(diǎn)

    J2ME 程序開(kāi)發(fā)注意要點(diǎn)

    講Java基礎(chǔ)的書(shū)籍中都是以J2SE來(lái)講基礎(chǔ),這就給學(xué)習(xí)造成了一些不必要的麻煩,下面將J2ME中用到的和不需要的Java基礎(chǔ)知識(shí)做一個(gè)簡(jiǎn)單的說(shuō)明
    2016-07-07
  • SpringBoot中的自定義starter詳解

    SpringBoot中的自定義starter詳解

    這篇文章主要介紹了SpringBoot中的自定義starter詳解,SpringBoot中的starter是一種非常重要的機(jī)制,能夠拋棄以前繁雜的配置,將其統(tǒng)一集成進(jìn)starter,需要的朋友可以參考下
    2024-01-01
  • springboot配置文件中屬性變量引用方式@@解讀

    springboot配置文件中屬性變量引用方式@@解讀

    這篇文章主要介紹了springboot配置文件中屬性變量引用方式@@解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • java AOP原理以及實(shí)例用法總結(jié)

    java AOP原理以及實(shí)例用法總結(jié)

    在本篇文章里我們給大家整理了關(guān)于java AOP原理以及相關(guān)知識(shí)點(diǎn)總結(jié),正在學(xué)習(xí)的朋友們參考下。
    2019-05-05
  • Mybatis之foreach標(biāo)簽內(nèi)傳入list為空的問(wèn)題

    Mybatis之foreach標(biāo)簽內(nèi)傳入list為空的問(wèn)題

    這篇文章主要介紹了Mybatis之foreach標(biāo)簽內(nèi)傳入list為空的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評(píng)論