O Observer é um padrão de projeto comportamental que permite que um objeto notifique outros objetos sobre alterações em seu estado.
O padrão Observer fornece uma maneira de assinar e cancelar a assinatura desses eventos para qualquer objeto que implemente uma interface de assinante.
Exemplos de uso: O padrão Observer é bastante comum no código Java, especialmente nos componentes da interface de usuário. Ele fornece uma maneira de reagir a eventos que acontecem em outros objetos sem acoplamento às suas classes.
Aqui estão alguns exemplos do padrão nas principais bibliotecas Java:
Identificação: O padrão pode ser reconhecido por métodos de assinatura, que armazenam objetos em uma lista e por chamadas para o método de atualização emitido para objetos nessa lista.
Assinatura do evento
Neste exemplo, o padrão Observer estabelece colaboração indireta entre objetos de um editor de texto. Sempre que o objeto Editor é alterado, ele notifica seus assinantes. EmailNotificationListener e LogOpenListener reagem a essas notificações executando seus comportamentos principais.
As classes de assinante não são acopladas à classe do editor e podem ser reutilizadas em outras aplicações, se necessário. A classe Editor depende apenas da interface abstrata do assinante. Isso permite adicionar novos tipos de assinantes sem alterar o código do editor.
publisher
publisher/EventManager.java: Publicador básico
editor
editor/Editor.java: Publicador concreto, rastreado por outros objetos
listeners
listeners/EventListener.java: Interface comum do observador
listeners/EmailNotificationListener.java: Envia emails ao receber notificações
listeners/LogOpenListener.java: Escreve uma mensagem em um registro ao receber uma notificação