Analogia
Imagine que você tem um carregador de celular 🇧🇷 (tomada brasileira), mas viajou para os Estados Unidos 🇺🇸 e lá a tomada é diferente.
- O carregador funciona
- A energia funciona
- Mas… eles não encaixam!
O que você faz?
Você usa um adaptador de tomada. Esse adaptador não muda o carregador nem a tomada — ele só faz os dois conseguirem se conectar (faz uma tradução).
O Adapter fazer duas coisas que não são compatíveis conseguirem trabalhar juntas.
Exemplo simples
pagar(valor) // sistema espera algo assim (tomada us)
fazerPagamento(valor) // você tem algo assim (tomara 🇧🇷)
// o adapter faz as duas coisas que não são compatíveis conseguirem trabalhar
class AdapterPagamento {
constructor(servico) {
this.servico = servico;
}
pagar(valor) {
this.servico.fazerPagamento(valor);
}
}
O Adapter pode ser bidirecional?
Na maioria dos casos, você só precisa de uma direção:
- Sistema → Adapter → Código existente
Porque existe um lado dominante (o sistema que define o padrão).
Quando vira bidirecional?
Quando você tem dois sistemas que precisam conversar entre si, e cada um fala um idioma” diferente.
- Sistema A usa: pagar(valor)
- Sistema B usa: fazerPagamento(valor)
- A → B precisa de um Adapter
- B → A precisa de outro Adapter
Top comments (0)