tryb iteracyjny
Tryb iteracyjny (Iterator Wzorzec) środowisko programowania Java i .Net jest bardzo częstym wzorzec projektowy. Ten tryb służy do sekwencyjnego dostępu elementów z kolekcji obiektów, zbiór obiektów nie trzeba znać podstawową reprezentację.
Iterator wzór należy wzorców zachowań.
wprowadzenie
Intencją: zapewnienie sposobu dostępu do obiektu, w każdym elemencie polimeryzacji, ale nie ma potrzeby, aby odsłonić wnętrza obiektu.
Głównie do rozwiązania: inny sposób przemierzać cały obiekt integracji.
Kiedy stosować: przejeżdżające polimerowy obiekt.
Jak naprawić: spacer pomiędzy elementami odpowiedzialności iteratorów zamiast kruszywa obiektów.
Kod klawisza: zdefiniowanie interfejsu: hasNext obok.
Przykłady zastosowań: JAVA w iteracyjnej.
Zalety: 1, który obsługuje inny sposób przemierzać łączną obiekt.2, upraszczając klasę polimeryzacji iterator. 3, w tym samym polimeryzacji może mieć wiele przechodzenie. 4, w trybie iteracyjnym, dodać nową klasę polimerowego klasy iteratora i proste, bez modyfikowania oryginalnego kodu.
Wady: Ze względu na podział obowiązków iteratora wzór przechowywania danych i danych przemieszczenia, dodawanie nowych klas zagregowane wymagają odpowiedni wzrost nowej klasy iteratora, liczba par wzrostem klasy, co zwiększa złożoność systemu do pewnego stopnia.
Scenariusze użycia: 1, dostęp do polimerowego zawartości obiektu bez konieczności narażać swoją wewnętrzną reprezentację.2, potrzeba, aby zapewnić różne kruszywa sposobu Przedmiotem poprzecznym. 3 za przejazd inną strukturę zagregowanego zapewnia ujednolicony interfejs.
Uwagi: Tryb iteracyjny oddziela zachowanie przejścia z kolekcji obiektów, klasa abstrakcyjna iterator, który jest odpowiedzialny, tak że oba mogą być wykonane bez narażenia na wewnętrznej struktury zbiorów, ale także pozwolić kodu zewnętrznego przejrzysty dostęp do wewnętrznego gromadzenia danych.
realizacja
Będziemy tworzyć interfejsIteratornarracji i sposobu nawigacji Zwraca iterator interfejsupojemnika.Klasa EntityKontenerimplementuje interfejs będzie odpowiedzialny za wdrożenieinterfejsu Iterator.
IteratorPatternDemo,nasze zajęcia pokazowe użyć klasy encji wydrukowaćNamesRepositoryNamesRepository przechowywane jako zbiorunazw.
Etap 1
Tworzenie interfejsu.
Iterator.java
public interface Iterator { public boolean hasNext (); Public Object next (); }
Container.java
Pojemnik {public interface public Iterator getIterator (); }
Etap 2
Tworzenie klasy podmiotKontenerimplementuje interfejs. Klasa ta zrealizowała interfejs klasy wewnętrznaNameIteratoriteratora.
NameRepository.java
public class NameRepository realizuje Container { Nazwy public string [] = { "Robert", "Jan", "Julie", "Lora"}; @Override public Iterator getIterator () { powrót nowego NameIterator (); } prywatne klasy NameIterator implementuje Iterator { index int; @Override public boolean hasNext () { if (index <names.length) { return true; } return false; } @Override public Object next () { if (this.hasNext ()) { powrót nazwy [indeks ++]; } powrót null; } } }
etap 3,
UżyjNameRepositorydostać iteratory i drukować nazwiska.
IteratorPatternDemo.java
{public class IteratorPatternDemo public static void main (String [] args) { NameRepository namesRepository = new NameRepository (); dla (Iterator ITER = namesRepository.getIterator (); iter.hasNext ();) { String name = (String) iter.next (); System.out.println ( "Nazwa:" + nazwa); } } }
Etap 4
Sprawdź, czy wyjście.
Imię i nazwisko: Robert Imię i nazwisko: John Imię i nazwisko: Julie Nazwa: Lora