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
viernes, 29 de mayo de 2009
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario