Java Reference
In-Depth Information
Java definiert im Zusammenhang mit Iteratoren noch ein weiteres Interface: das
Interface
Iterable<E>
in der Bibliothek
java.lang
. Dieses Interface entspricht in
seiner Rolle in etwa dem Interface
IDatenstruktur
. Klassen, die das Interface
Iterable<E>
implementieren, müssen eine Methode
iterator()
zur Verfügung
stellen, die als Ergebnis einen Iterator vom Typ
Iterator<E>
liefert. Der Clou an
dem Interface
Iterable
ist, dass über Datenstrukturen, die dieses Interface imple-
mentieren, mit einer sogenannten
foreach
-Schleife iteriert werden kann.
Wird also im Programmbeispiel die Klasse
MitarbeiterArray
mit dem Zusatz
implements Iterable<Mitarbeiter>
versehen und die Methode
erzeuge-
Iterator()
umbenannt in
iterator()
, dann könnte die
main()
-Methode der
Klasse
Testclient
alternativ auch wie folgt formuliert werden:
public static void main (String[] args)
{
for (Mitarbeiter elem : maListe)
elem.print();
}
Hier ist nun die Nutzung eines Iterators komplett aus dem Quelltext verschwunden.
Sollen aber zusätzliche Funktionen des Iterators benutzt werden, wie etwa Elemente
einfügen oder entfernen, dann ist die explizite Schreibweise zur Nutzung eines
Iterators weiterhin erforderlich.
4.17.6
Ähnliche Entwurfsmuster
Ein Iterator und ein Besucher des
Besucher-Musters
sind sich insofern ähnlich, als
dass sie sich über die Elemente einer Datenstruktur hinweg bewegen. Die Aufgabe
eines Iterators beschränkt sich auf einen solchen Durchlauf der Datenstruktur,
während ein Besucher zusätzlich während des Durchlaufs eine zusätzliche Funktiona-
lität erbringt. Wie bereits erwähnt wurde, kann ein Besucher einen Iterator nutzen, um
die Datenstruktur zu durchlaufen. Weiterhin setzt das Iterator-Muster voraus, dass die
Objekte der Datenstruktur eine gemeinsame Basisklasse haben. Das Besucher-Muster
verlangt hingegen nur, dass die Objekte der Datenstruktur eine passende
akzep-
tieren()
-Methode besitzen. Beim Besucher-Muster liegt außerdem der Fokus da-
rauf, dass weitere Besucher mit anderer Funktionalität flexibel zu einer Datenstruktur
hinzugefügt werden können.
Search WWH ::
Custom Search