Java迭代器模式

Java迭代器模式

迭代器模式是Java.Net編程環(huán)境中非常常用的設(shè)計(jì)模式。此模式用于以順序方式訪問(wèn)集合對(duì)象的元素,而不需要知道其底層表示。

迭代器模式屬于行為模式類別。

實(shí)現(xiàn)實(shí)例

在這個(gè)實(shí)例中,將創(chuàng)建一個(gè)Iterator接口,它陳述了一個(gè)導(dǎo)航方法和一個(gè)Container接口,以及返回迭代器。 實(shí)現(xiàn)Container接口的具體類將負(fù)責(zé)實(shí)現(xiàn)Iterator接口并使用它。

IteratorPatternDemo這是一個(gè)演示類,將使用一個(gè)具體的實(shí)現(xiàn)類-NamesRepository,打印一個(gè)存儲(chǔ)在NamesRepository集合中的Names

迭代器模式的實(shí)現(xiàn)實(shí)例結(jié)構(gòu)如下圖中所示 -

[圖片上傳失敗...(image-c5a4a3-1545635680888)]

第1步

創(chuàng)建兩個(gè)簡(jiǎn)單的接口,如下代碼所示 -
Iterator.java

public interface Iterator {
   public boolean hasNext();
   public Object next();
}


Java

Container.java

public interface Container {
   public Iterator getIterator();
}


Java

第2步

創(chuàng)建實(shí)現(xiàn)Container接口的具體類。 這個(gè)類有一個(gè)內(nèi)部類NameIterator,它實(shí)現(xiàn)了Iterator接口。
NameRepository.java

public class NameRepository implements Container {
   public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};

   @Override
   public Iterator getIterator() {
      return new NameIterator();
   }

   private class NameIterator implements Iterator {

      int index;

      @Override
      public boolean hasNext() {

         if(index < names.length){
            return true;
         }
         return false;
      }

      @Override
      public Object next() {

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


Java

第3步

使用NameRepository獲取迭代器并打印其名稱。
IteratorPatternDemo.java

public class IteratorPatternDemo {

   public static void main(String[] args) {
      NameRepository namesRepository = new NameRepository();

      for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){
         String name = (String)iter.next();
         System.out.println("Name : " + name);
      }     
   }
}


Java

第4步

驗(yàn)證輸出,執(zhí)行上面的代碼得到以下結(jié)果 -

Name : Robert
Name : John
Name : Julie
Name : Lora
?著作權(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)容

  • 1 場(chǎng)景問(wèn)題# 1.1 工資表數(shù)據(jù)的整合## 考慮這樣一個(gè)實(shí)際應(yīng)用:整合工資表數(shù)據(jù)。 這個(gè)項(xiàng)目的背景是這樣的,項(xiàng)目...
    七寸知架構(gòu)閱讀 2,647評(píng)論 0 53
  • 概念 迭代器模式(Iterator),提供一種方法順序訪問(wèn)一個(gè)聚合對(duì)象中的各種元素,而又不暴露該對(duì)象的內(nèi)部表示。 ...
    今晚打肉山閱讀 436評(píng)論 0 0
  • 【學(xué)習(xí)難度:★★★☆☆,使用頻率:★★★★★】直接出處:迭代器模式梳理和學(xué)習(xí):https://github.com...
    BruceOuyang閱讀 1,530評(píng)論 2 1
  • 渭源老驥閱讀 568評(píng)論 0 4
  • 《彈窗》。2020年,重慶。賢盯著面前空無(wú)一物的人形皮囊,冷汗順著鬢角滴下來(lái)。瞬間,人工視網(wǎng)膜上投射出一個(gè)人影,那...
    小九風(fēng)云閱讀 176評(píng)論 0 0

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