← Back to home

Adapter

By Pscodium · 8/4/2026 · 2 views

Adapter

O Adapter é um padrão estrutural utilizado quando precisamos fazer duas interfaces incompatíveis trabalharem juntas.

A ideia é criar uma camada intermediária que adapta uma interface para outra.

Imagine que nosso sistema espera:

interface Payment {
  pay(amount: number): void;
}

Mas uma biblioteca externa possui:

class StripeSDK {
  makePayment(value: number) {
    console.log(
      `Pagamento de R$ ${value}`
    );
  }
}

O problema é que nosso sistema espera:

pay()

Mas a biblioteca oferece:

makePayment()

Podemos criar um Adapter:

class StripeAdapter
  implements Payment {

  constructor(
    private stripe: StripeSDK
  ) {}

  pay(amount: number) {
    this.stripe.makePayment(amount);
  }
}

Agora podemos usar:

const stripe =
  new StripeSDK();

const payment =
  new StripeAdapter(stripe);

payment.pay(100);

O sistema conhece apenas:

Payment

Enquanto o Adapter conhece os detalhes do:

StripeSDK

Exemplo prático

Imagine que seu sistema utiliza:

interface Logger {
  log(message: string): void;
}

Você deseja utilizar uma biblioteca externa:

class ExternalLogger {
  writeLog(message: string) {
    console.log(
      `[LOG] ${message}`
    );
  }
}

Criamos:

class LoggerAdapter
  implements Logger {

  constructor(
    private logger: ExternalLogger
  ) {}

  log(message: string) {
    this.logger.writeLog(message);
  }
}

Agora:

const logger =
  new LoggerAdapter(
    new ExternalLogger()
  );

logger.log(
  "Usuário criado"
);

Quando usar?

O Adapter é útil quando:

  • Uma biblioteca externa possui uma API incompatível.
  • Você está integrando sistemas legados.
  • Quer trocar uma implementação sem alterar o código cliente.
  • Precisa adaptar APIs diferentes para uma interface comum.

A ideia principal é:

Fazer interfaces incompatíveis trabalharem juntas sem modificar suas implementações originais.



Comments

No comments yet.