Es usado como un sistema de detección de eventos con el fin de hacer notificaciones de estos cambios a las clases realcionadas.
Características generales de este patrón:
Nombre:
Observer.
También conocido como:
Publisher-Subcriber.
Propósito:
Define una dependencia del tipo uno-a-muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, el observador se encarga de notificar este cambio a todos los otros dependientes.
Aplicabilidad:
Este patrón se utiliza generalmente cuando un sistema:
· Ha enviado al menos un mensaje.
· Recibido uno o más mensajes que pueden variar dentro de una aplicación o entre aplicaciones.
· Este patron es aplicado con frecuencia en situaciones en las que el remitente del mensaje no necesita o requiere saber cómo actuar sobre los receptores de la información que proporciona.Hay un grupo de objetos en un sistema que potencialmente pueden responder para el mismo tipo de mensaje.
Estructura:

Participantes:
· Subject: Conoce a sus observadores, que pueden ser un número arbitrario. Proporciona una interfaz para añadir y quitar objetos observadores.
· Observer: Define la interfaz de los objetos a los que se debe notificar cambios en un sujeto.
· ConcreteSubject: Almacena el estado de interés para sus observadores. Envía notificaciones a sus observadores cuando su estado cambia.
· ConcreteObserver: mantiene una referencia a un ConcreteSubject, almacena el estado del sujeto que le resulta de interés, implementa Observe para mantener su estado consistente con el sujeto.
Consecuencias:
· Permite modificar sujetos y observadores de manera independiente.
· Reutilizar un sujeto sin reutilizar sus observadores, y viceversa.
· Capacidad de comunicación mediante difusión.
· Acoplamiento abstracto entre el sujeto y el observador.
· Se pueden añadir/quitar observadores.
· Actualizaciones inesperadas. Una operación en el sujeto puede desencadenar una cascada de cambios en sus observadores.
Patrones relacionados:
· Mediator.
· Singleton.
Etiquetas: Behavioral Patterns, Observer, Patrones de Comportamiento