Mediator × Observer
Dois padrões que costumam ser trocados um pelo outro, e o que de fato os separa.
Em uma frase
Os dois reduzem acoplamento entre componentes. A diferença é onde mora a regra: no Observer cada observador decide sozinho o que fazer; no Mediator a decisão é centralizada em um lugar só.
Critério a critério
Onde vive a lógica de reação?
- Mediator
- No mediador, concentrada e legível de uma vez.
- Observer
- Distribuída entre os observadores, cada um por si.
Quem conhece quem?
- Mediator
- Os colegas conhecem o mediador explicitamente, e ele conhece todos.
- Observer
- O sujeito não sabe nem quantos observadores existem.
Como cresce?
- Mediator
- Risco de virar god object — cada regra nova engorda o centro.
- Observer
- Risco de virar cascata — um evento dispara outro, difícil de rastrear.
Serve para quê?
- Mediator
- Coordenar peças com regras de interação entre elas.
- Observer
- Notificar interessados de que algo aconteceu.
Quando escolher cada um
Mediator
Existe regra sobre COMO os componentes reagem juntos — 'trocar o destino limpa a data'.
Ver o conceito completoObserver
É difusão pura: cada interessado decide sozinho, e o emissor não se importa com o resultado.
Ver o conceito completoPor que confundem
Na prática eles costumam aparecer juntos — o canal de avisos é Observer, a lógica de reação é Mediator — e isso faz parecer que são o mesmo padrão. A pergunta que separa: se eu adicionar um componente novo, alguém precisa decidir como ele interage com os outros? Se sim, há um mediador ali, mesmo que os avisos cheguem por eventos.