Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Patrones de Comportamiento del Software (página 3)




Enviado por Pablo Turmero



Partes: 1, 2, 3, 4

Monografias.com
31
Iterator (Iterador)
Propósito
Proporciona una forma para acceder a los elementos de una estructura de datos sin exponer los detalles de la representación.
Motivación
Un objeto contenedor (agregado o colección) tal como una lista debe permitir una forma de recorrer sus elementos sin exponer su estructura interna.
Debería permitir diferentes métodos de recorrido
Debería permitir recorridos concurrentes
No queremos añadir esa funcionalidad a la interfaz de la colección

Monografias.com
32
Iterator (Iterador)
Motivación
Una clase Iterator define la interfaz para acceder a una estructura de datos (p.e. una lista).
Iteradores externos vs. Iteradores internos.
Iteradores externos: recorrido controlado por el cliente
Iteradores internos: recorrido controlado por el iterador

Monografias.com
33
Iterador Externo
(Gp:) ListIterator
(Gp:) first()
(Gp:) next()
(Gp:) isDone()
(Gp:) item()
(Gp:) index()
(Gp:) Lista
(Gp:) count()
(Gp:) append()
(Gp:) remove()
(Gp:) +list

Monografias.com
34
Iterador Externo
List lista = new List();

ListIterator iterator = new ListIterator(lista);

iterator.first();
while (!iterator.isDone()) {
Object item = iterator.item();
// código para procesar item
iterator.next();
}

Monografias.com
35
Iteradores Externos en Java
interface Iterator {
boolean hasNext();
Object next();
void remove();
}
Iterator it = lista.iterator();
while (it.hasNext()) {
Object item = it.next();
// código para procesar item
}

Monografias.com
36
Iterador Externo Polimórfico

Monografias.com
37
Iterador Interno
La clase que modela la iteración ofrece métodos que controlan la ejecución: ejecutar una acción sobre todos los elementos, ejecutar una acción sobre aquellos elementos que cumplan una condición,etc.
Ejemplo: iteradores en Smalltalk y Ruby
Dados como parámetros una acción y/o condición, el método de iteración se encarga de recorrer la colección.
En Eiffel y Java no podemos pasar rutinas o código como argumento, en lenguajes OO tipados dinámicamente como Smalltalk o Ruby se dispone de bloques de código.

Monografias.com
38
Iterador externo
En Smalltalk, sea colCuentas una colección de instancias de Cuenta
colCuentas select:[:cuenta| cuenta.saldo > 1000]
colCuentas reject:[:cuenta| cuenta.saldo > 1000]
colCuentas do: [:cuenta| cuenta.reintegro:1000

Monografias.com
39
Iterador Interno
public void doIf() {
Iterator it = col.iterator();
while (it.hasNext()) {
Object o = iterator.next();
if (test(o)) action(o)
}
}

Monografias.com
40
Iterador Interno

Monografias.com
41
Iterador
Consecuencias
Simplifica la interfaz de un contenedor al extraer los métodos de recorrido
Permite varios recorridos concurrentes
Soporta variantes en las técnicas de recorrido

Monografias.com
42
Iterador
Implementación
¿Quién controla la iteración?
Externos vs. Internos
¿Quién define el algoritmo de recorrido?
Agregado: iterador sólo almacena el estado de la iteración (Cursor). Ejemplo de uso del patrón Memento
Iterador: es posible reutilizar el mismo algoritmo sobre diferentes colecciones o aplicar diferentes algoritmos sobre una misma colección

Monografias.com
43
Iterador
Implementación
¿Es posible modificar la colección durante la iteración?
Colección e iterador son clases íntimamente relacionadas: clases amigas en C++ y clases internas en Java
Suele ser usado junto con el patrón Composite.

Monografias.com
44
Mediator (Mediador)
Propósito
Define un objeto que encapsula cómo interaccionan un conjunto de objetos. Favorece un bajo acoplamiento, liberando a los objetos de referenciarse unos a otros explícitamente, y permite variar la interacción de manera independiente.
Motivación
Muchas interconexiones entre objetos dificulta la reutilización y la especialización del comportamiento.
Ventana que incluye un conjunto de elementos gráficos con dependencias entre ellos.

Monografias.com
45
Motivación
Mediador

Monografias.com
46
Mediador
Motivación

Monografias.com
47
Estructura
Mediador

Monografias.com
48
Mediador
Aplicabilidad
Un conjunto de objetos se comunica entre sí de una forma bien definida, pero compleja. Las interdependencias son poco estructuradas y difíciles de comprender.
Reutilizar una clase es difícil porque tiene dependencias con muchas otras clases.
Un comportamiento que es distribuido entre varias clases debería ser adaptable sin crear muchas subclases.

Monografias.com
49
Mediador
Consecuencias
Evita crear subclases de los colegas, sólo se crean subclases del mediador.
Desacopla a los colegas.
Simplifica los protocolos entre las clases
Abstrae el cómo cooperan los objetos
Centraliza el control en el mediador: clase difícil de mantener

Monografias.com
50
Mediador
Implementación
No hay necesidad de definir una clase abstracta Mediator si los colegas trabajan con un único mediador.
Los colegas deben comunicarse con el mediador cuando un evento de interés ocurre, varias posibilidades:
patrón Observer
interfaz de notificación especializada en Mediator (por ejemplo en Smalltalk-V, la clase ViewManager)

Partes: 1, 2, 3, 4
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter