Latest web development tutorials

Iterative Modus

Iterative-Modus (Iterator Pattern) Java- und .NET-Programmierumgebung ist ein sehr häufiges Design-Muster. Dieser Modus ist für sequentiellen Zugriff Elemente einer Sammlung von Objekten verwendet wird, eine Sammlung von Objekten müssen nicht die zugrunde liegende Darstellung zu kennen.

Iterator Muster gehört Verhaltensmuster.

Einführung

Intent: bieten eine Möglichkeit , ein Objekt in jedem Element der Polymerisation zugreifen, aber keine Notwendigkeit , das Innere des Objekts zu belichten.

Vor allem zu lösen: eine andere Art und Weise die gesamte Integration Objekt zu durchqueren.

Wann verwendet man :ein polymeres Objekt durchquert.

Wie zu beheben: die Wanderung zwischen den Elementen der Verantwortung zu Iteratoren anstelle von aggregierten Objekten.

Der Schlüsselcode: definieren die Schnittstelle: hasNext, nächste.

Anwendungsbeispiele: JAVA im Iterator.

Vorteile: 1, die eine andere Art und Weise unterstützt eine aggregierte Objekt zu durchlaufen.2, die Vereinfachung der Polymerisation Iterator-Klasse. 3, in dem gleichen Polymerisationsverfahren können mehrere traversal aufweisen. 4, in einem iterativen Modus, fügen Sie eine neue Klasse von polymeren Iterator-Klasse und einfach, ohne den ursprünglichen Code zu modifizieren.

Nachteile: Durch die Trennung der Aufgaben Iterator Musterdatenspeicher und Überquerungsdaten, Hinzufügen neuer aggregierte Klassen eine entsprechende Erhöhung in neuen Iterator - Klasse erfordern, die Anzahl der Klassenpaaren zunimmt, was die Komplexität des Systems zu einem gewissen Grad erhöht.

Einsatzszenarien: 1, Zugang zu einem Polymerinhaltsobjekt , ohne seine interne Darstellung aussetzen zu müssen.2 ist die Notwendigkeit, eine Vielzahl von aggregierten Objekts traversal Verfahren bereitzustellen. 3 für unterschiedliche Aggregatstruktur durchqueren bietet eine einheitliche Schnittstelle.

Hinweise: iterative Modus getrennt Traversal Verhalten einer Sammlung von Objekten, abstrakte eine Iterator - Klasse verantwortlich zu sein, so dass beide ohne Einwirkung auf die interne Struktur der Sammlung durchgeführt werden kann, sondern auch externen Code transparenten Zugriff auf interne Datensammlung lassen.

Realisierung

Wir werden eine ErzählungIterator- Schnittstelle erstellen und eine Navigationsmethode Gibt einen Iterator derContainer- Schnittstelle. Entity - KlasseContainerimplementiert die Schnittstelle verantwortlich sein wird ,die Iterator- Schnittstelle für die Implementierung.

IteratorPatternDemo,unsere Demonstration Klassen verwenden , um die Entity - KlasseNamesRepositoryNamesRepository gespeichert alsNamenSammlung zu drucken.

Iterator Muster UML-Diagramm

Schritt 1

Erstellen Sie eine Schnittstelle.

Iterator.java

öffentliche Schnittstelle Iterator {
   public boolean hasNext ();
   public Object next ();
}

Container.java

public interface Container {
   public Iterator getIterator ();
}

Schritt 2

Erstellen von Entity - KlasseContainerimplementiert die Schnittstelle. Diese Klasse hat die interne KlasseNameIteratorIterator - Schnittstelle realisiert.

NameRepository.java

public class NameRepository implementiert Container {
   public String Namen [] = { "Robert", "John", "Julie", "Lora"};

   @Override
   public Iterator getIterator () {
      return new NameIterator ();
   }

   private Klasse NameIterator implementiert Iterator {

      int index;

      @Override
      public boolean hasNext () {
         if (index <names.length) {
            return true;
         }
         return false;
      }

      @Override
      public Object next () {
         if (this.hasNext ()) {
            Rückkehr Namen [index ++];
         }
         return null;
      }		
   }
}

Schritt 3

Verwenden SieNameRepositoryIteratoren zu bekommen, und die Namen drucken.

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

Stellen Sie sicher, ausgegeben.

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