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