O padrão Observer define uma dependência um-para-muitos onde múltiplos objetos (observers) são notificados automaticamente quando outro objeto (o subject) muda de estado. Ele permite comunicação desacoplada e orientada por eventos — amplamente utilizado em UIs, sistemas de eventos e programação reativa.
O que o padrão Observer faz
OBSERVER → a SUBJECT maintains a list of OBSERVERS and NOTIFIES them on state changes:
→ observers SUBSCRIBE to the subject
→ when the subject changes → it notifies ALL subscribed observers automatically
→ observers react to the notification (update themselves)
→ one-to-many: one subject, many observers; DECOUPLED (subject doesn't know observer details)
