19
Patrones Proxy y Observer Preparado por: Sebastián González Méndez Mauricio Umaña Rodríguez Carlos Coronel Murillo

Proxy observer patrones

Embed Size (px)

DESCRIPTION

Patrones de Diseño.

Citation preview

Page 1: Proxy observer patrones

Patrones Proxy y Observer

Preparado por:

Sebastián González Méndez

Mauricio Umaña Rodríguez

Carlos Coronel Murillo

Page 2: Proxy observer patrones

PatrónProxy

Page 3: Proxy observer patrones

Proxy (Sustituto)

Propósito

Proporcionar un sustituto de un objeto para controlar el

acceso a dicho objeto.

Motivación

Diferir el coste de crear un objeto hasta que sea necesario

usarlo: creación bajo demanda.

Un editor de documentos que incluyen objetos gráficos.

¿Cómo ocultamos que una imagen se creará cuando se

necesite? Manejar el documento requiere conocer

información sobre la imagen.

3

Page 4: Proxy observer patrones

Proxy

• Motivación

o Hay situaciones en las que un cliente no referencia o no

puede referenciar a un objeto directamente, pero necesita

interactuar con él.

o Un objeto proxy puede actuar como intermediario entre el

objeto cliente y el objeto destino.

o El objeto proxy tiene la misma interfaz como el objeto

destino.

o El objeto proxy mantiene una referencia al objeto destino y

puede pasarle a él los mensajes recibidos (delegación).

4

Page 5: Proxy observer patrones

Proxy

• Motivación

o Retrasar la operación de una clonación de una tabla hasta

conocer que es realmente necesaria. Se desea clonar la tabla

para evitar mantener un bloqueo un largo período de tiempo,

lo cual es una operación costosa. Se puede crear una clase

que encapsule la tabla y sólo clone cuando sea necesario.

o Mantenimiento de los servicios ante los fallos.

5

Page 6: Proxy observer patrones

Proxy

6

Estructura

Básica

Page 7: Proxy observer patrones

Proxy

O Aplicabilidad

O Siempre que hay necesidad de referenciar a un objeto mediante una referencia más rica que un puntero o una referencia normal.

O Situaciones comunes:

1. Proxy acceso remoto (acceso a un objeto en otro espacio de direcciones)

2. Proxy virtual (crea objetos grandes bajo demanda)

3. Proxy para protección (controlar acceso a un objeto)

4. Referencia inteligente (smart reference, proporciona operaciones adicionales)

7

Page 8: Proxy observer patrones

Participantes en estructura Proxy

8

La clase Proxy: mantiene una referencia al objeto real y

proporciona una interfaz idéntica al sujeto. Además controla

el acceso a dicho objeto real y puede ser el responsable de

su creación y borrado.

La clase Sujeto: define una interfaz común para el proxy y el

objeto real, de tal modo que se puedan usar de manera

indistinta.

La clase Sujeto Real: clase del objeto real que el proxy

representa.

Page 9: Proxy observer patrones

Proxy

O Consecuencias

∆ Introduce un nivel de dirección para:

1. Un proxy remoto oculta el hecho que objetos residen en

diferentes espacios de direcciones.

2. Un proxy virtual tales como crear o copiar un objeto bajo

demanda.

3. Un proxy para protección o las referencias inteligentes

permiten realizar tareas de control sobre los objetos

accedidos.

9

Page 10: Proxy observer patrones

Implementación Proxy

10

Page 11: Proxy observer patrones

Patrón Observer

Page 12: Proxy observer patrones

Propósito

Definir una dependencia entre objetos de uno a muchos de

modo que cuando un objeto cambia su estado todos sus

dependientes son notificados y actualizados

automáticamente.

Page 13: Proxy observer patrones

Aplicabilidad

Cuando se desea que la aplicacion a ser implementada se

requieretenga un objeto que sea observado por uno o varios

objetos diferentes.

Ejemplo: una Subasta. En la que de ser un aplicativo

requeriria de objetos clientes (clientes de la subasta), los cuales

son los objetos que observan y el objeto subastador (subastador) el

cual seria el objeto observado y del cual se desea conocer siempre

sus cambios.

Page 14: Proxy observer patrones

Estructura

Page 15: Proxy observer patrones

Participantes en estructura Observer

1) Observador (Observer) : <<Interface>>

Define el método que usa el sujeto para notificar cambios en su estado.

2) ObservadorConcreto (ConcreteObserver) : Objeto

Mantiene una referencia al sujeto concreto e implementa el observador.

3) Sujeto (Subject) : <<Interface>>

Agrega y elimina observadores. El Sujeto conoce a todos sus observadores.

4) SujetoConcreto (ConcreteSubject) : Objeto

Mantiene el estado de interés para los observadores concretos.

Los notifica cuando cambia su estado.

Page 16: Proxy observer patrones

Observer

Ventaja:

Abstrae el acoplamiento entre el sujeto y el observador, lo cual es

beneficioso ya que conseguimos una mayor independencia.

Desventaja:

Con el uso de este patrón ocurre que vamos a desconocer las

consecuencias de una actualización, lo cual dependiendo del

problema puede afectar al rendimiento.

Page 17: Proxy observer patrones

Consecuencias

O Riesgo de ralentización.( Disminución de la velocidad de respuesta

del sistema). Esto debido a la cadena de notificaciones.

O Los ciclos de notificaciones tanto del objeto observable como los

objetos observadores al producir y reproducir cadenas de

notificaciones, puede ocasionar una disminución en la memoria del

sistema o inclusive un agotamiento de la misma. (Stack OverFlow)

O Ciclos infinitos.

Page 18: Proxy observer patrones

Implementación

Page 19: Proxy observer patrones

MUCHAS GRACIAS.