Download - Proxy observer patrones
Patrones Proxy y Observer
Preparado por:
Sebastián González Méndez
Mauricio Umaña Rodríguez
Carlos Coronel Murillo
PatrónProxy
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
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
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
Proxy
6
Estructura
Básica
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
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.
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
Implementación Proxy
10
Patrón Observer
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.
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.
Estructura
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.
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.
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.
Implementación
MUCHAS GRACIAS.