viernes, 29 de mayo de 2009

Observer

Propósito
Define una dependencia uno-a-muchos entre objetos, de modo que cuando cambia el estado de un objeto, todos sus dependientes automáticamente son notificados y actualizados.
Aplicabilidad
Use el patrón Observer cuando cuando un cambio de estado en un objeto requiere cambios en otros objetos, y no sabe sobre qué objetos debe aplicarse el cambio, cuando un objeto debe ser capaz de notificar algo a otros objetos, sin hacer asunciones sobre quiénes son estos objetos.
Implementación
El patrón Observer necesita de los siguientes elementos:
•    Subject: Conoce a sus observadores. Provee una interfaz para agregar y quitar observadores.
•    Observer: Define una interfaz para recibir notificaciones.
•    ConcreteSubject: Almacena estado de interés para los observadores. Notifica a los observadores cuando cambia su estado.
•    ConcreteObserver: Mantiene una referencia al ConcreteSubject. Mantiene estado que debe estar sincronizado con el del ConcreteSubject.
Ventajas e Inconvenientes
Presenta acoplamiento abstracto y mínimo entre Subject y Observer lo cual quiere decir: 
•    Subject no necesita conocer las clases concretas de observers. 
•    Permite modificar independientemente subjects y observers.
•    Pueden reutilizarse por separado.
•    Pueden añadirse observers sin modificar el subject.
Patrones Relacionados
•    Proxy: En la comunicación distribuida, se usa remote proxy para gestionar la comunicación entre el Observer y Observable

No hay comentarios:

Publicar un comentario