DEV Community

Determinado 96
Determinado 96

Posted on

Um resumo sobre o padrão de projeto Adapter

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);
  }
}
Enter fullscreen mode Exit fullscreen mode

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)