O padrão Observer define uma dependência entre objetos de modo que quando um objeto (sujeito) muda de estado, todos os seus observadores são notificados automaticamente. O padrão é aplicável quando uma abstração tem dois aspectos dependentes que podem variar independentemente, e quando objetos precisam ser notificados de mudanças sem conhecer quem são esses objetos.