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

Diseño de Software – Observer, State y Visitor (página 3)




Enviado por Pablo Turmero



Partes: 1, 2, 3

Monografias.com
31
Estrategia
Consecuencias
Define una familia de algoritmos relacionados.
Una alternativa a crear subclases de la clase Contexto.
Elimina sentencias CASE
El cliente puede elegir entre diferentes estrategias o implementaciones: debe conocer detalles
Se incrementa el número de objetos: usar Flyweight
State y Strategy son similares, cambia el Propósito: ejemplos de composición con delegación

Monografias.com
32
Estrategia
Implementación
¿Cómo una estrategia concreta accede a los datos del contexto?
Pasar datos como argumentos
Pasar el contexto como argumento
Estrategia almacena una referencia al contexto

Monografias.com
33
Template Method (Método Plantilla)
Propósito
Define el esqueleto (esquema, patrón) de un algoritmo en una operación, difiriendo algunos pasos a las subclases. Permite a las subclases redefinir ciertos pasos de un algoritmo sin cambiar la estructura del algoritmo.
Motivación
Fundamental para escribir código en un framework.
Clase Aplicación que maneja objetos de la clase Documento: método OpenDocument

Monografias.com
34
Método Plantilla
void openDocument (String nombre) {
if (! canOpenDocument (nombre)) { return; }
Document doc = createDocument();
if (doc != null) {
docs. addDocument(doc);
aboutToOpenDocument (doc);
doc.open();
doc.read();
}
}

Monografias.com
35
Método Plantilla
has(v:G): Boolean is do
from start until after or else equal (v,item)
loop forth end
Result := not after
end

Monografias.com
36
Método Plantilla
Aplicabilidad
Implementar las partes fijas de un algoritmo y dejar que las subclases implementen el comportamiento que puede variar.
Cuando el comportamiento común entre varias subclases debe ser factorizado y localizado en una superclase común.
Controlar extensiones de las subclases: algoritmos con puntos de extensión

Monografias.com
37
Método Plantilla
Consecuencias
Técnica fundamental para la reutilización: factorizar comportamiento común en librerías de clases
Estructura de control invertida conocida como “Principio de Hollywood”: “No nos llames, nosotros te llamaremos”.
Un método plantilla invoca a los siguientes tipos de métodos:
operaciones abstractas
operaciones concretas en la clase abstracta
operaciones concretas en clientes
métodos factoría
métodos hook que proporcionan comportamiento por defecto

Monografias.com
38
Método Plantilla
Implementación
Minimizar el número de métodos que es necesario redefinir en las subclases.
Nombrar a los métodos que se deben redefinir añadiéndole cierto prefijo, por ejemplo “do”.
En C++, métodos a redefinir son protegidos y virtuales, el método plantilla no será virtual.

Monografias.com
39
Visitor (Visitante)
Propósito
Representar una operación que debe ser aplicada sobre los elementos de una estructura de objetos. Permite definir una nueva operación sin cambiar las clases de los elementos sobre los que opera.
Motivación
Un compilador que representa los programas como árboles de derivación de la sintaxis abstracta necesita aplicar diferentes operaciones sobre ellos: comprobación de tipos, generación de código, .. y además listados de código fuente, reestructuración de programas,…

Monografias.com
40
Visitor
Motivación

Monografias.com
41
Visitor
Motivación

Monografias.com
42
Visitor
Motivación

Monografias.com
43
Visitor
Aplicabilidad
Tenemos una jerarquía de clases que representan objetos de propósito general (p.e. nodos de un árbol de derivación de sintaxis) y podemos utilizarlo en diferentes aplicaciones, lo que implicaría añadir métodos en las clases de la jerarquía.
Una estructura de objetos contiene muchas clases de objetos con diferentes interfaces, y se quiere realizar operaciones sobre los objetos que dependen de las clases concretas.
Las clases definiendo la estructura de objetos cambian con poca frecuencia, pero a menudo se definen nuevas operaciones sobre la estructura. Mejor definir las operaciones en clases aparte.

Monografias.com
44
Visitor
Consecuencias
Facilidad para añadir nuevas operaciones: en vez de distribuir la funcionalidad, se añade un nuevo visitor.
Un objeto visitor recoge comportamiento relacionado, lo que simplifica las clases de los elementos.
Es difícil añadir nuevas subclases de elementos concretos, ya que implica cambiar la jerarquía de Visitor.
A diferencia de un iterador, Visitor puede visitar objetos de clases que no tienen una superclase común.
Compromete la encapsulación: los elementos concretos deben permitir a los visitors hacer su trabajo.

Monografias.com
45
Visitor
Implementación
El patrón permite añadir operaciones a clases sin cambiarlas. Esto se consigue aplicando la técnica double-dispatch.
¿Quién es responsable del recorrido de la estructura de objetos?
Estructura de objetos
Un iterador
El visitor

Monografias.com
46
Double-Dispatch (Smalltalk)
Point>> + delta
^delta isPoint
ifTrue:[(x+delta x) @ (y + delta y)]
ifFalse:[(x+delta) @ (y + delta)]

Point>> + delta
^delta addPoint: self
Number>> addPoint: aPoint
^(self + aPoint x) @ (self + aPoint y)
Point>> addPoint: aPoint
^(self x + aPoint x) @ (self y + aPoint y)

Partes: 1, 2, 3
 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