Latest web development tutorials

modalità iterativo

Modalità iterativo (Iterator Pattern) ambiente di programmazione Java e .Net è un modello di progettazione molto comune. Questa modalità viene utilizzata per gli elementi ad accesso sequenziale di una collezione di oggetti, una collezione di oggetti non è necessario conoscere la rappresentazione sottostante.

modello Iterator appartiene modelli comportamentali.

introduzione

Scopi: Fornire un modo per accedere a un oggetto in ciascun elemento della polimerizzazione, ma nessuna necessità di esporre l'interno dell'oggetto.

Principalmente per risolvere: un modo diverso per attraversare l'intero oggetto di integrazione.

Quando usare: l'attraversamento di un oggetto polimerico.

Come risolvere: la passeggiata tra gli elementi della responsabilità di iteratori invece di oggetti aggregati.

Il codice chiave: definire l'interfaccia: hasNext, prossimo.

Esempi di applicazione: Java nei iteratore.

Vantaggi: 1, che supporta un modo diverso di attraversare un oggetto di aggregazione.2, semplificando la classe di polimerizzazione iteratore. 3, nella stessa polimerizzazione può avere attraversamento multipla. 4, in modo iterativo, aggiungere una nuova classe di classe iteratore polimerico e veloce, senza modificare il codice originale.

Svantaggi: A causa della separazione delle funzioni iteratore memorizzazione dati di modello ei dati di traslazione, aggiungere nuove classi aggregate richiedono un corrispondente aumento nuova classe iteratore, il numero di aumenti accoppiamenti classe, che aumenta la complessità del sistema in una certa misura.

scenari di utilizzo: 1, l'accesso a un oggetto contenuto polimerico, senza dover esporre la sua rappresentazione interna.2, la necessità di fornire una varietà di metodo di oggetto attraversamento aggregata. 3 per attraversare diversa struttura aggregata fornisce un'interfaccia unificata.

Note: modalità iterativa è separata comportamento attraversamento di una collezione di oggetti, classe astratta un iteratore ad essere responsabili, in modo che entrambi si può fare senza esposizione alla struttura interna della collezione, ma consentono anche di codice di accesso trasparente esterno per la raccolta dei dati interni.

realizzazione

Creeremo una interfaccia narrativaIteratore un metodo di navigazione restituisce un iteratore dell'interfacciaContainer.classe di entitàContainerimplementa l'interfaccia sarà responsabile perl'implementazionedell'interfacciaIterator.

IteratorPatternDemo,le nostre classi dimostrazione utilizzare la classe di entità per stampareNamesRepositoryNamesRepository memorizzato comeNames.

modello Iterator diagramma UML

fase 1

Creare un'interfaccia.

Iterator.java

interfaccia pubblica Iterator {
   hasNext public boolean ();
   Public Object next ();
}

Container.java

Contenitore interfaccia pubblica {
   pubblica Iterator getIterator ();
}

fase 2

Crea classe di entitàContainerimplementa l'interfaccia. Questa classe ha realizzato l'interfacciaNameIteratorIterator classe interna.

NameRepository.java

public class NameRepository implementa Container {
   I nomi public string [] = { "Robert", "John", "Julie", "Lora"};

   @Override
   pubblica Iterator getIterator () {
      restituire nuova NameIterator ();
   }

   Classe NameIterator privato implementa Iterator {

      int index;

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

      @Override
      Public Object next () {
         if (this.hasNext ()) {
            tornare nomi [indice ++];
         }
         restituire null;
      }		
   }
}

fase 3

UtilizzareNameRepositoryper ottenere iteratori, e stampare i nomi.

IteratorPatternDemo.java

public class IteratorPatternDemo {
	
   Main (string [] args) {public static void
      NameRepository namesRepository = new NameRepository ();

      for (Iterator iter = namesRepository.getIterator (); iter.hasNext ();) {
         string name = (String) iter.next ();
         System.out.println ( "Nome:" + nome);
      } 	
   }
}

fase 4

Verifica uscita.

Nome: Robert
Nome: John
Nome: Julie
Nome: Lora