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.
No site de comércio eletrônico, os itens ficam sem estoque de vez em quando. Pode haver clientes que estejam interessados em um item específico que ficou fora de estoque. Existem três soluções para este problema:
O cliente continua verificando a disponibilidade do item com alguma frequência.
O e-commerce bombardeia os clientes com todos os novos itens disponíveis, que estão em estoque.
O cliente assina apenas o item específico no qual está interessado e é notificado se o item estiver disponível. Além disso, vários clientes podem assinar o mesmo produto.
A opção 3 é a mais viável e é disso que trata o padrão Observer. Os principais componentes do padrão Observer são:
Alvo, a instância que publica um evento quando algo acontece.
Observer, que se inscreve nos eventos do alvo e é notificado quando eles acontecem.