Pola Desain - Pola Iterator

Pola iterator adalah pola desain yang sangat umum digunakan di lingkungan pemrograman Java dan .Net. Pola ini digunakan untuk mendapatkan cara mengakses elemen objek koleksi secara berurutan tanpa perlu mengetahui representasi yang mendasarinya.

Pola iterator termasuk dalam kategori pola perilaku.

Penerapan

Kita akan membuat antarmuka Iterator yang menarasikan metode navigasi dan antarmuka Container yang mengembalikan iterator. Kelas beton yang mengimplementasikan antarmuka Container akan bertanggung jawab untuk mengimplementasikan antarmuka Iterator dan menggunakannya

IteratorPatternDemo , kelas demo kami akan menggunakan NamesRepository , implementasi kelas konkret untuk mencetak Nama yang disimpan sebagai koleksi di NamesRepository .

Langkah 1

Buat antarmuka.

Iterator.java

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

Container.java

public interface Container {
   public Iterator getIterator();
}

Langkah 2

Buat kelas konkret yang mengimplementasikan antarmuka Container . Kelas ini memiliki kelas dalam NameIterator yang mengimplementasikan antarmuka 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;
      }		
   }
}

LANGKAH 3

Gunakan NameRepository untuk mendapatkan iterator dan nama cetak.

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);
      } 	
   }
}

LANGKAH 4

Verifikasi hasilnya.

Name : Robert
Name : John
Name : Julie
Name : Lora