Auf dieser Seite ・ Überprüfen der Struktur des Iterators ・ Verschleierung des Iterators ・ Iteratormuster und objektorientiert Beschreibt über
Überprüfen Sie mit der folgenden Klassenkonfiguration
Klasse | Erläuterung |
---|---|
sam.class | Array und Iterator()haben |
Itarator.class | sam.Rufen Sie ein Array-Element der Klasse auf |
user(Main.class) | sam.benutze Klasse |
Die Grundstruktur der Klassen sam und Iterator sieht folgendermaßen aus:
sam.class
class sam{
int[] i= {0,1,2};
Iterator iterate(){}
}
Iterator.class
class Iterator{
boolean hasNext(){}
int next(){}
}
sam.class
class sam{
int[] i={0,1,2};
Iterator iterate(){ //Gibt Iterator zurück
return new Iterator(this.i); // Iterator.Übergeben Sie ein Array von sam als Argument an class
}
}
Iterator.class
class Iterator{
int[] i; // sam.Speichert ein Array von Klassen A.
int index=0; //Eine Variable, die die Elemente eines Arrays B zählt
Iterator(int[] i){this.i=i;} // sam.Nehmen Sie ein Array aus der Klasse und speichern Sie es in A.
boolean hasNext(){
boolean b=false;
if(index<i.length){b=true;} //Vergleichen Sie die Anzahl der Elemente im Array mit dem Wert B, um festzustellen, ob das nächste Element vorhanden ist:
else{return b;}
return b;
}
int next(){
int ans = i[index]; //Sam das aktuelle Element.Kehre zum Unterricht zurück
index++;
return ans;
}
}
user(Main.class)
public static void main(String[] args){
sam s1 = new sam();
Iterator it = s1.iterate();
while(it.hasNext()){
System.out.println((int) it.next());}
}}
Überprüfen Sie mit der folgenden Klassenkonfiguration
Klasse | Erläuterung |
---|---|
Interface.interface | user(Main.class)Ist Schnittstelle und Verwendung.Sam über Klasse.Verwenden Sie die Funktion der Klasse |
use.class | sam.Geben Sie eine Instanz der Klasse aus |
sam.class | Implementieren Sie vom Benutzer verwendete Funktionen (Array- und Iteratorfunktion). |
Iterator.interface | Benutzer und SamIterator.Vermittlungsklasse |
samIterator | sam.Rufen Sie ein Array-Element der Klasse auf |
Die grundlegende Klassenstruktur ist wie folgt
Interface.interface
interface Interface{
Iterator iterate();
}
use.class
class use {
Interface newInstance(){}
}
sam.class
class sam implements Interface{
int[] i={0,1,2};
Iterator iterate(){}
}
[Iteratorseite]
Iterator.interface
interface Iterator{
boolean hasNext();
int next();
}
samIterator.class
class samIterator implements Iterator{
samIterator(){}
public boolean hasNext(){}
public int next(){}
}
Lassen Sie uns jede Klasse machen
Interface.interface
interface Interface{
Iterator iterate();
}
use.class
class use {
public static Interface newInstance(){
return new sam();}
}
sam.class
class sam implements Interface{
private int[] i={0,1,2};
public Iterator iterate(){
return new samIterator(this.i);
}
}
Iterator.interface
interface Iterator{
boolean hasNext();
int next();
}
samIterator.class
class samIterator implements Iterator{
private int i[];
private int index=0;
samIterator(int[] i){
this.i=i;
}
public boolean hasNext(){
if(index<i.length){return true;}
else{return false;}
}
public int next(){
int ans = i[index];
index++;
return ans;}
}
user(Main.class)
public static void main(String[] args){
Interface face = use.newInstance();
Iterator it = face.iterate();
while(it.hasNext()){
System.out.println(it.next());
}
Verwenden Sie vom Benutzer einfach use.class und zwei Schnittstellen Jede Implementierungsklasse ist unsichtbar, wodurch die Abhängigkeit beseitigt wird
Entwickler können den Inhalt des Arrays sam.class ändern Auch wenn Sie zur Zweigverarbeitung wechseln, um Map abhängig von den Bedingungen zu verwenden Auf der Benutzerseite muss nichts geändert werden, solange Iterator funktioniert
Recommended Posts