Değerli Java dostları, bu yazımda iterator design pattern için örnek vermek istiyorum. Öncelikle iterator design pattern çok da yabancı olduğumuz konu değil diye düşünüyorum. Özellikle collection yapıları ile uğraşan arkadaşlar iterator design pattern ile daha önceden tanışmış olacaklar. Iterator design pattern için temel amaç elimizdeki veri yığını üzerinde ki bu array, list, stack vs olabilir, döngüsel işlemleri sağlayabilmek. Iterator design pattern için elimizde interface mutlaka olmalı ki ortak bir mimari sağlayabilelim. Array üzerinden iterator design pattern için örneğimize bakalım hemen.

package anajavatica.pattern.behavioral.iterator;public class Notebook {private String name = “”;

public Notebook(String name) {
super();
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

package anajavatica.pattern.behavioral.iterator;public interface Iterator {public boolean hasNext();

public T nextElement();

}

package anajavatica.pattern.behavioral.iterator;public class NotebookIterator implements Iterator {private Notebook[] notebookList = null;
private int index = 0;

public NotebookIterator(Notebook[] notebookList) {
super();
this.notebookList = notebookList;
}

@Override
public boolean hasNext() {
return index < notebookList.length ? true : false;
}

@Override
public Notebook nextElement() {
Notebook element = notebookList[index];
index++;
return element;
}

}

package anajavatica.pattern.behavioral.iterator;public class NotebookStore {private Notebook[] notebookList = null;

public NotebookStore() {
notebookList = new Notebook[5];
notebookList[0] = new Notebook(“Notebook1”);
notebookList[1] = new Notebook(“Notebook2”);
notebookList[2] = new Notebook(“Notebook3”);
notebookList[3] = new Notebook(“Notebook4”);
notebookList[4] = new Notebook(“Notebook5”);
}

public Iterator iterator() {
return new NotebookIterator(notebookList);
}

}

package anajavatica.pattern.behavioral.iterator;public class IteratorMain {public static void main(String[] args) {

NotebookStore store = new NotebookStore();
Iterator iterator = store.iterator();

while (iterator.hasNext()) {
System.out.println(iterator.nextElement().getName());
}

}

}

Aslında iterator design pattern ile yapmaya çalıştığımız iş çok basit. Elimizdeki veri kümesinin tipine bakmaksızın son kullanıcıya ortak bir döngü mekanizması sunmak.

Bol Java’ lı günler dileğiyle… 😀

No responses yet

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir