Define uma dependência de um-pra-muitos entre objetos.
Dessa forma, quando um objeto muda de estado, todas as
suas dependências são notificadas e atualizadas automaticamente.
Quando usar
Uma abstração tem dois aspectos, um
depende do outro. Encapsulando esses aspectos em objetos separados fará com
que se possa variá-los e reusá-los independentemente.
Uma mudança em
um objeto requer uma mudança em outros, e não se sabe como esses outros
objetos efetivamente fazem essas mudanças.
Um objeto deve poder
notificar outros objetos sem assumir nada sobre eles. Dessa forma evita-se que
os objetos envolvidos fiquem fortemente acoplados.