O Adapter é um padrão de projeto estrutural, que permite a colaboração de objetos incompatíveis.
O Adapter atua como um wrapper entre dois objetos. Ele captura chamadas para um objeto e as deixa reconhecíveis tanto em formato como interface para este segundo objeto.
Exemplos de uso: O padrão Adapter é bastante comum no código PHP. É frequentemente usado em sistemas baseados em algum código legado. Nesses casos, os adaptadores criam código legado com classes modernas.
Identificação: O adapter é reconhecível por um construtor que utiliza uma instância de tipo abstrato/interface diferente. Quando o adaptador recebe uma chamada para qualquer um de seus métodos, ele converte parâmetros para o formato apropriado e direciona a chamada para um ou vários métodos do objeto envolvido.
Exemplo conceitual
Este exemplo ilustra a estrutura do padrão de projeto Adapter. Ele se concentra em responder a estas perguntas:
De quais classes ele consiste?
Quais papéis essas classes desempenham?
De que maneira os elementos do padrão estão relacionados?
Depois de aprender sobre a estrutura do padrão, será mais fácil entender o exemplo a seguir, com base em um caso de uso PHP do mundo real.
index.php: Exemplo conceitual
Output.txt: Resultados da execução
Exemplo do mundo real
O padrão Adapter permite usar classes de terceiros ou herdadas, mesmo que sejam incompatíveis com a maior parte do seu código. Por exemplo, em vez de reescrever a interface de notificação do seu aplicativo para oferecer suporte a cada serviço de terceiros, como Slack, Facebook, SMS ou (você escolhe), você pode criar um conjunto de wrappers especiais que adaptam as chamadas do seu aplicativo para uma interface e formato exigidos por cada classe de terceiros.