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