domingo, 7 de julio de 2013

EL PATRÓN ITERADOR



Introducción:

Proporciona un modo de acceder secuencialmente a los elementos de un objeto agregado sin exponer su representación interna.
Permite definir diversos recorridos sobre una estructura, admitiendo el uso simultáneo de la misma por parte de varios clientes.

Nombre del Patrón:
Iterator (Iterador, Cursor).

Clasificacion del Patrón:
Patrón de Comportamiento.

Intención:

proporcionar una forma coherente de acceder secuencialmente a los elementos de una colección, independientemente del tipo de colección subyacente.

Motivación:

Un objeto agregado, tal como una lista, debería proveer un modo de brindar acceso a sus elementos sin exponer su estructura interna. Más aún, quizás se desea recorrer la lista en diferentes formas, dependiendo de lo que Ud. quiera realizar. Pero, probablemente, la idea no es aumentar la interfaz de la lista con operaciones para recorridos diferentes, aún anticipando los que se necesitarán. Tal vez, también se necesite tener más de un recorrido en la misma lista.

El patrón Iterator permite llenar todas estas espectativas. La idea principal en este patrón es tomar la responsabilidad del acceso y recorrido de la lista y colocarla dentro del objeto iterator. La clase Iterator define una interfaz para el acceso de los elementos de la lista. Un objeto iterador es responsable de mantener la pista del elemento actual; esto es, sabe cuáles elementos ya han sido recorridos. 



Estructura:


 

Participantes:


Iterador:
Define una interfaz para recorrer los agregados.

IteradorConcreto: implementa la interfaz iterador.

Agregado: Define la interfaz para crear un objeto iterador.

AgregadoConcreto: Implementa la interfaz de creación de un iterador para devolver un iterador concreto.

Colaboraciones:

Un iteradorConcreto almacena la posición del objetoactual en el agregado de modo que sabe cual es el objeto siguiente en el recorrido.

Consecuencias:
1.      Permite variaciones en el recorrido de un agregado. Los agregados complejos pueden recorrerse de muchas formas. Los iteradores facilitan cambiar el algoritmo de recorido, basta consustituir la instancia de iterador por otra diferente. También se pueden definir subfases de iterador para permitir nuevos recorridos.

 2.      Los iteradores simplifican la interfaz agregada. La interfaz de recorrido de Iterador elimina la necesidad de una interfaz parecida en agregado, simplificando así la interfaz del agregado.

 3.      Se puede hacer más de un recorrido a la vez sobre un agregado. Un Iterador mantiene su propio estado del recorrido. Por tanto, es posible estar realizando más de un recorrido al mismo tiempo

No hay comentarios:

Publicar un comentario