最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

public class ConcreteTeacher implements Teacher{
    private Object[] present = {"張三來了","李四來了","王五沒來"}; //同學(xué)出勤集合
    public Iterator createIterator(){
        return new ConcreteIterator(this); //新的點名
    }
    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é)出勤集合的大小,也就是說要知道班上有多少人
    }
}

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

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

4、具體的點名(ConcreteIterator)類是對點名(Iterator)接口的實現(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(){ //第一個
        index = 0;
    }
    public void next(){ //下一個
        if(index<size){
            index++;
        }
    }
    public boolean isDone(){ //是否點名完畢
        return (index>=size);
    }
    public Object currentItem(){ //當(dāng)前同學(xué)的出勤情況
        return teacher.getElement(index);
    }
}

5、編寫測試類

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

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

6、說明

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

相關(guān)文章

  • 基于redis setIfAbsent的使用說明

    基于redis setIfAbsent的使用說明

    這篇文章主要介紹了基于redis setIfAbsent的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java?導(dǎo)出Excel增加下拉框選項

    Java?導(dǎo)出Excel增加下拉框選項

    這篇文章主要介紹了Java?導(dǎo)出Excel增加下拉框選項,excel對于下拉框較多選項的,需要使用隱藏工作簿來解決,使用函數(shù)取值來做選項,下文具體的操作詳情,需要的小伙伴可以參考一下
    2022-04-04
  • Java文件選擇對話框JFileChooser使用詳解

    Java文件選擇對話框JFileChooser使用詳解

    這篇文章主要介紹了Java文件選擇對話框JFileChooser使用詳解的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • springboot國際化多語言配置方式

    springboot國際化多語言配置方式

    這篇文章主要介紹了springboot國際化多語言配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 詳解AngularJs與SpringMVC簡單結(jié)合使用

    詳解AngularJs與SpringMVC簡單結(jié)合使用

    本篇文章主要介紹了AngularJs與SpringMVC簡單結(jié)合使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java?web實現(xiàn)購物車案例

    Java?web實現(xiàn)購物車案例

    這篇文章主要為大家詳細介紹了Java?web實現(xiàn)購物車案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java 設(shè)計模式原則之迪米特法則詳解

    Java 設(shè)計模式原則之迪米特法則詳解

    這篇文章主要介紹了Java 設(shè)計模式原則之迪米特法則詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Jenkins集成SonarQube的方法詳解

    Jenkins集成SonarQube的方法詳解

    這篇文章主要介紹了Jenkins集成SonarQube的方法詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 解決Mybatis-Plus更新方法不更新NULL字段的問題

    解決Mybatis-Plus更新方法不更新NULL字段的問題

    這篇文章主要介紹了解決Mybatis-Plus更新方法不更新NULL字段的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論

庆阳市| 青田县| 沁阳市| 阿克| 中西区| 宁乡县| 河津市| 称多县| 藁城市| 新泰市| 汉川市| 宁蒗| 泸西县| 锡林浩特市| 海门市| 芒康县| 常州市| 天台县| 托克托县| 襄樊市| 安阳市| 河西区| 孝昌县| 台中市| 乾安县| 合肥市| 芦溪县| 安多县| 黄大仙区| 连南| 阜新市| 工布江达县| 泉州市| 石台县| 施秉县| 武邑县| 梨树县| 广河县| 蒙自县| 大埔区| 宁安市|