Nachdem ich so viele Jahre lang studiert hatte, fand ich ein Problem. Essen Sie gut und schlafe gut. Ich finde es sehr seltsam.
Okay, schauen wir uns an, wie der Namen des Lehrers implementiert wird:
1. Definieren wir wie üblich zuerst die Lehrer -Schnittstellenklasse:
Die Codekopie lautet wie folgt:
öffentliche Schnittstelle Lehrer {
öffentlicher Iterator createIterator ();
}
2. Die spezifische Lehrerklasse (ConcretEacher) ist eine Implementierung der Lehrer -Schnittstelle:
Die Codekopie lautet wie folgt:
öffentliche Klasse ConcretEacher implementiert Lehrer {
Private Object [] Present = {"Zhang san ist hier", "Li si ist hier", "Wang Wu ist nicht hier"};
public iterator createIterator () {
Neue Betoneiter zurückgeben (dies);
}
öffentliches Objekt getElement (int Index) {// die aktuelle Anwesenheit des Klassenkameradens erhalten
if (index <präsent.length) {
Rückgabe vorhanden [Index];
}
anders{
null zurückkehren;
}
}
public int getSize () {
Return Present.Length;
}
}
3. Definieren Sie die Iterator -Schnittstellenklasse:
Die Codekopie lautet wie folgt:
public interface iterator {
void First (); // der erste
void Next (); // als nächstes
boolean isdone (); // ist der Name abgeschlossen.
Object CurrentItem ();
}
4. Die spezifische Betoneiter -Klasse ist eine Implementierung der Iterator -Schnittstelle:
Die Codekopie lautet wie folgt:
öffentliche Klasse Concreteiter implementiert Iterator {
Privatbetonteacherlehrer;
private int index = 0;
private int size = 0;
public konkreteiter (konkretteacherlehrer) {
this.Teacher = Lehrer;
size = lehrer.getSize ();
Index = 0;
}
public void first () {// First
Index = 0;
}
public void Next () {// Weiter
if (index <size) {
Index ++;
}
}
public boolean isdone () {// ist der Name abgeschlossen
return (index> = Größe);
}
öffentliches Objekt CurrentItem () {// Aktuelle Anwesenheit von Klassenkameraden
return ehrer.getElement (Index);
}
}
5. Testklassen schreiben :
Die Codekopie lautet wie folgt:
öffentliche Klassen -Test {
Privat Iterator es;
Privatlehrerlehrer = neuer ConcretEacher ();
public void operation () {
it = lehrer.createiterator ();
while (! it.isdone ()) {// Wenn Sie noch nicht fertig mit dem Klicken beendet sind
System.out.println (it.currentItem (). ToString ());
IT.Next ();
}
}
public static void main (String agrs []) {
Test Test = neuer Test ();
test.operation ();
}
}
6. Beschreibung :
A: Definition: Das Iteratormuster kann nacheinander auf ein aggregiertes Element zugreifen, ohne die interne Situation des Aggregats freizulegen.
B: In diesem Beispiel gibt der Lehrer eine Schnittstelle, um ein Iteratorobjekt zu erstellen, und der Iterator definiert die Schnittstelle, die erforderlich ist, um die Teilnahme der Schüler zu durchqueren.
C: Der Vorteil des Iteratormodus besteht darin, dass sich das (ConcretEacher) Objekt, wie z.