Entwurfsmuster - Iteratormuster

Iteratormuster sind in Java- und .NET-Programmierumgebungen sehr häufig verwendete Entwurfsmuster. Dieses Muster wird verwendet, um eine Möglichkeit zu erhalten, sequentiell auf die Elemente eines Sammlungsobjekts zuzugreifen, ohne die zugrunde liegende Darstellung kennen zu müssen.

Das Iteratormuster fällt unter die Kategorie Verhaltensmuster.

Implementierung

Wir werden eine Iterator- Schnittstelle erstellen , die die Navigationsmethode beschreibt, und eine Container- Schnittstelle, die den Iterator erneut ausführt. Konkrete Klassen, die die Container- Schnittstelle implementieren , sind dafür verantwortlich, die Iterator- Schnittstelle zu implementieren und zu verwenden

IteratorPatternDemo , unsere Demo - Klasse verwenden NamesRepository , eine konkrete Klasse Implementierung ein drucken Namen als eine Sammlung in gespeichert NamesRepository .

Schritt 1

Schnittstellen erstellen.

Iterator.java

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

Container.java

public interface Container {
   public Iterator getIterator();
}

Schritt 2

Erstellen Sie eine konkrete Klasse, die die Container- Schnittstelle implementiert . Diese Klasse hat die innere Klasse NameIterator, die die Iterator- Schnittstelle implementiert .

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

Schritt 3

Verwenden Sie das NameRepository , um Iterator- und Drucknamen abzurufen .

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

Schritt 4

Überprüfen Sie die Ausgabe.

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