Tasarım Desenleri - Yineleyici Deseni
Yineleyici modeli, Java ve .Net programlama ortamında çok yaygın olarak kullanılan tasarım modelidir. Bu desen, bir koleksiyon nesnesinin öğelerine, temeldeki temsilini bilmeye gerek kalmadan sıralı bir şekilde erişmenin bir yolunu elde etmek için kullanılır.
Yineleyici örüntü, davranış kalıbı kategorisine girer.
Uygulama
Gezinme yöntemini anlatan bir Yineleyici arabirimi ve yineleyiciyi yeniden çalıştıran bir Kapsayıcı arabirimi oluşturacağız. Konteyner arayüzünü uygulayan somut sınıflar, Yineleyici arayüzünü uygulamaktan ve kullanmaktan sorumlu olacaktır.
IteratorPatternDemo , demo sınıfımız, NamesRepository'de bir koleksiyon olarak depolanan Adları yazdırmak için somut bir sınıf uygulaması olan NamesRepository'yi kullanacaktır .
Aşama 1
Arayüzler oluşturun.
Iterator.java
public interface Iterator {
public boolean hasNext();
public Object next();
}
Container.java
public interface Container {
public Iterator getIterator();
}
Adım 2
Kapsayıcı arabirimini uygulayarak somut sınıf oluşturun . Bu sınıf, Yineleyici arabirimini uygulayan iç sınıf NameIterator'a sahiptir .
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;
}
}
}
Aşama 3
Yineleyici almak ve adları yazdırmak için Ad Deposunu kullanın .
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);
}
}
}
4. adım
Çıkışı doğrulayın.
Name : Robert
Name : John
Name : Julie
Name : Lora