Es un patrón de comportamiento
Permite relacionar diferentes objetos entre si en torno a uno Principal, así cada vez que este ultimo cambie su estado, los demás también cambiaran de forma automática
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 deben 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 la interfaz de Observer para mantener su estado consistente con el del sujeto.
Dependencia uno a muchos que notifica el estado de un objeto a los objetos dependientes.
Mantiene la consistencia entre los objetos sin aumentar el acoplamiento de las clases
Actualización de gráficos en hojas de calculos