Adapter
Definição
O padrão Adapter permite que interfaces incompatíveis trabalhem juntas. Ele atua como um tradutor entre duas classes, convertendo a interface de uma classe em outra esperada pelo cliente.
Esse padrão é muito útil para integrar sistemas legados, bibliotecas externas ou componentes que não foram projetados para funcionar diretamente com a interface desejada.
Por que é importante
O Adapter permite o reaproveitamento de código existente sem precisar modificá-lo diretamente. Ele desacopla a lógica do cliente da implementação concreta, permitindo a substituição e adaptação de componentes sem alterar a estrutura principal do sistema.
É especialmente útil quando você precisa fazer integração com APIs de terceiros ou adaptar sistemas antigos para funcionar com novos componentes.
Exemplo prático (Python)
Imagine que temos um sistema que espera objetos com o método
enviar()
, mas temos uma biblioteca externa que usa
disparar()
. Podemos usar um Adapter para resolver essa
incompatibilidade:
# Código legado ou de uma biblioteca externa
class ServicoEmailExterno:
def disparar(self, texto):
print(f"Disparando e-mail externo: {texto}")
# Interface esperada pelo sistema
class Notificador:
def enviar(self, mensagem):
pass
# Adapter que traduz 'enviar' para 'disparar'
class AdapterEmail(Notificador):
def __init__(self, servico_externo):
self.servico_externo = servico_externo
def enviar(self, mensagem):
self.servico_externo.disparar(mensagem)
Uso do adapter:
email_externo = ServicoEmailExterno()
notificador = AdapterEmail(email_externo)
notificador.enviar("Relatório diário")
O sistema pode continuar usando enviar()
, sem se preocupar
com a interface real do serviço externo. O Adapter faz a ponte entre os
dois mundos. O Adapter atua como uma camada de
compatibilidade, permitindo que novas integrações sejam feitas com o
mínimo de impacto.