Observer es un patrón de diseño de comportamiento que permite a un objeto notificar a otros objetos sobre cambios en su estado.
El patrón Observer proporciona una forma de suscribirse y cancelar la subscripción a estos eventos para cualquier objeto que implementa una interfaz suscriptora.
Ejemplos de uso: El patrón Observer es bastante habitual en el código Java, sobre todo en los componentes GUI. Proporciona una forma de reaccionar a los eventos que suceden en otros objetos, sin acoplarse a sus clases.
Aquí tienes algunos ejemplos del patrón en las principales bibliotecas Java:
Identificación: El patrón puede reconocerse por los métodos de subscripción, que almacenan objetos en una lista, y por las llamadas al método de actualización emitidas a todos los objetos de esa lista.
Suscripción a eventos
En este ejemplo, el patrón Observer establece una colaboración indirecta entre objetos de un editor de texto. Cada vez que el objeto Editor cambia, lo notifica a sus suscriptores. EmailNotificationListener y LogOpenListener reaccionan a esas notificaciones ejecutando sus principales comportamientos.
Las clases suscriptoras no están acopladas a la clase editora y pueden reutilizarse en otras aplicaciones si fuera necesario. La clase Editor depende únicamente de la interfaz suscriptora abstracta. Esto permite añadir nuevos tipos de suscriptor sin cambiar el código del editor.
publisher
publisher/EventManager.java: Notificador básico
editor
editor/Editor.java: Notificador concreto, rastreado por otros objetos
listeners
listeners/EventListener.java: Interfaz observadora común
listeners/EmailNotificationListener.java: Envía correos electrónicos al recibir la notificación
listeners/LogOpenListener.java: Escribe un mensaje a un registro al recibir una notificación