Después de estudiar durante tantos años, encontré un problema. Come bien y duerme bien.
Bien, echemos un vistazo a cómo se implementa el proceso de nombres del maestro:
1. Como de costumbre , primero definamos la clase de interfaz del maestro:
La copia del código es la siguiente:
profesor de interfaz pública {
Public Iterator CreateIterator ();
}
2. La clase de maestro específico (ConcretetEach) es una implementación de la interfaz del maestro (maestro):
La copia del código es la siguiente:
El concreteceacher de clase pública implementa maestro {
Objeto privado [] presente = {"Zhang San está aquí", "Li si está aquí", "Wang Wu no está aquí"};
public Iterator createIterator () {
devolver nuevo concreteiterator (esto);
}
Public Object GetElement (int index) {// Obtenga la asistencia actual del compañero de clase
if (index <presente.length) {
return presente [índice];
}
demás{
regresar nulo;
}
}
public int getsize () {
regresar presente.length;
}
}
3. Defina la clase de interfaz de iterador:
La copia del código es la siguiente:
Iterador de interfaz pública {
nulo primero ();
Void Next ();
boolean isdone ();
Object CurrentItem ();
}
4. La clase de concreteiterator específica es una implementación de la interfaz Iterator:
La copia del código es la siguiente:
clase pública concreteiterator implementa iterador {
Profesor de concreta privada;
Private int index = 0;
Tamaño privado int = 0;
Public Concreteiterator (maestro de concreteteceach) {
this.teacher = maestro;
size = maestro.getSize ();
índice = 0;
}
public void primero () {// primero
índice = 0;
}
public void Next () {// Siguiente
if (index <size) {
índice ++;
}
}
public boolean isDone () {// es el nombre completado
return (índice> = tamaño);
}
Public Object CurrentItem () {// Asistencia actual de compañeros de clase
Devuelve profesor.getElement (índice);
}
}
5. Escribir clases de prueba :
La copia del código es la siguiente:
Prueba de clase pública {
iterador privado it;
maestro privado profesor = nuevo concretetEacher ();
Operación pública nula () {
it = maestro.createIterator ();
while (! it.isdone ()) {// Si no ha terminado de hacer clic
System.out.println (IT.CurrentItem (). ToString ());
it.next ();
}
}
Public static void main (String Agrs []) {
Prueba test = new test ();
test.operation ();
}
}
6. Descripción :
R: Definición: El patrón de iterador puede acceder a un elemento agregado en secuencia sin exponer la situación interna del agregado.
B: En este ejemplo, el maestro ofrece una interfaz para crear un objeto iterador, y el iterador define la interfaz requerida para atravesar la asistencia de los estudiantes.
C: La ventaja del modo iterador es que cuando hay un cambio en el objeto (ConcretetEach), como se agrega nuevos estudiantes al conjunto de asistencia de compañero de clase, o se reducen menos compañeros de clase, este cambio no tiene efecto en el cliente.