Java Reference
In-Depth Information
:Datenstrukur
:Element
:Client
erzeugeIterator()
«Create»
erzeugeIterator() :
kit
kit :
KonkreterIterator
loop
next()
next() : Element
[hasNext()]
operation()
operation() : result
Bild 4-57 Sequenzdiagramm für das Iterator-Muster
Das Sequenzdiagramm zeigt nicht, wie das Iterator-Objekt und die Datenstruktur inter-
agieren. Aus Sicht des Clients ist diese Zusammenarbeit auch irrelevant. Außerdem
könnte diese Interaktion nur anhand einer konkreten Datenstruktur und einer konkre-
ten Durchlaufstrategie dargestellt werden und nicht anhand einer nur schematischen
Klassenstruktur des Musters.
Durch das Iterator-Muster ist nicht definiert, ob ein Iterator-Objekt für einen weiteren
Durchlauf durch die Datenstruktur wiederbenutzt werden kann oder ob jedes Mal ein
neues Iterator-Objekt erzeugt werden muss. Nach dem Erzeugen eines Iterator-
Objekts "zeigt" nämlich die Methode next() quasi vor das erste Element der Daten-
struktur und nach einem Durchlauf durch die Datenstruktur auf das letzte. Zur Wieder-
verwendung in einem weiteren Durchlauf müsste ein Iterator-Objekt also in seinen
Intialzustand versetzt werden können.
4.17.3.4 Programmbeispiel
In folgendem Programmbeispiel soll eine Liste bestehend aus Mitarbeitern erzeugt und
darüber iteriert werden. Diese Liste wird zwar der Einfachheit halber mit Hilfe eines
Arrays implementiert, die interne Struktur wird aber für eine Anwendung, die die Mit-
arbeiterliste über einen Iterator nutzt, nicht ersichtlich. Eine solche Anwendung des
Iterator-Musters ist in der Klasse TestClient am Ende des Beispiels zu sehen.
Die Klasse Mitarbeiter spielt in diesem Beispiel die Rolle der Klasse Element aus
der Beschreibung des Iterator-Musters. Die Details dieser Klasse sind aber aus Sicht
des Iterator-Musters irrelevant. Die Klasse Mitarbeiter wurde daher für das Beispiel
relativ einfach und übersichtlich gehalten:
Search WWH ::




Custom Search