Après avoir étudié pendant tant d'années, j'ai trouvé un problème. Mangez bien et dormez bien.
D'accord, jetons un coup d'œil à la mise en œuvre du processus de dénomination de l'enseignant:
1. Comme d'habitude , définissons d'abord la classe d'interface des enseignants:
La copie de code est la suivante:
professeur d'interface publique {
public iterator createIterator ();
}
2. La classe spécifique de l'enseignant (ConcreteTeacher) est une mise en œuvre de l'interface enseignant (enseignant):
La copie de code est la suivante:
classe publique ConcreteTeacher implémente le professeur {
objet privé [] présent = {"Zhang San est ici", "Li si est ici", "Wang Wu n'est pas ici"};
public iterator createIterator () {
Rendre le nouveau Concreteiterator (ceci);
}
Objet public GetElement (int index) {// Obtenez la fréquentation actuelle du camarade de classe
if (index <présent.length) {
return présent [index];
}
autre{
retourner null;
}
}
public int getSize () {
return présent.length; // obtenez la taille de l'ensemble de fréquentation des classes, c'est-à-dire que vous devez savoir combien de personnes il y a dans la classe.
}
}
3. Définissez la classe d'interface itérateur:
La copie de code est la suivante:
ITERATOR D'INTERFACE PUBLIQUE {
vide d'abord (); //
void suivant ();
Boolean Isdone ();
Objet CurrentItem ();
}
4. La classe spécifique du ConcreteIterator est une implémentation de l'interface Iterator:
La copie de code est la suivante:
classe publique ConcreteIterator implémente iterator {
professeur de concrète-enseignant privé;
Index int privé = 0;
private int size = 0;
Concreteiterator public (professeur de concrète-enseignant) {
this.teacher = enseignant;
size = enseign.getSize ();
index = 0;
}
public void First () {// d'abord
index = 0;
}
public void suivant () {// suivant
if (index <size) {
index ++;
}
}
public boolean isdone () {// est le nom terminé
return (index> = size);
}
Objet public CurrentItem () {// Administration actuelle des camarades de classe
return Teacher.getElement (index);
}
}
5. Écrivez des classes de test :
La copie de code est la suivante:
Test de classe publique {
itérateur privé;
enseignant privé = nouveau ConcreteTeacher ();
Opération du public public () {
it = enseignant.CreateIterator ();
while (! it.isdone ()) {// Si vous n'avez pas fini de cliquer
System.out.println (it.currentem (). ToString ());
it.next ();
}
}
public static void main (String agrs []) {
Test test = nouveau test ();
test.Operation ();
}
}
6. Description :
R: Définition: Le modèle d'itérateur peut accéder à un élément agrégé en séquence sans exposer la situation interne de l'agrégat.
B: Dans cet exemple, l'enseignant donne une interface pour créer un objet Iterator, et l'itérateur définit l'interface requise pour traverser la présence des élèves.
C: L'avantage du mode itérateur est que lorsqu'il y a un changement dans l'objet (ConcreteTeacher), tels que les nouveaux étudiants sont ajoutés à l'ensemble de fréquentation des camarades de classe, ou moins de camarades de classe sont réduits, ce changement n'a aucun effet sur le client.