📎 Webclip
Padrão de projeto de software - JavaScript: Adapter
O texto apresenta o Adapter como um padrão para uso em código já existente quando se quer trocar um objeto ou função por outro com interface diferente. A ideia é envolver o novo objeto, ou mediar suas chamadas, para que ele corresponda ao que o código atual sabe usar.
Fichamento#
- O Adapter serve para substituir um objeto ou função sem mudar o código que já depende da interface antiga.
- Quando o objeto é instanciado com
new, o Adapter o envolve e repassa as chamadas para a instância interna. - Quando o objeto é estático, o Adapter pode apenas mediar o acesso, sem encapsular uma nova instância.
- Um caso comum aparece na troca de bibliotecas, como substituir chamadas de jQuery por outra biblioteca em uma aplicação grande.
- Outro uso citado é a troca de bibliotecas de logger, inclusive em aplicações JavaScript com
consoledisponível no navegador. - No exemplo,
LoggerFactory.getLogger()retornawindow.consolee a aplicação chamalogger.log(...). - Em seguida, um
AjaxLoggerenvia logs ao servidor via AJAX e usa uma interface diferente da doconsole. - O
AjaxLoggerAdapterexpõelog(arg)e repassa a chamada paraAjaxLogger.sendLog(arg). - A mudança no código existente fica concentrada no factory, que passa a retornar o adapter em vez do logger original.
- O texto observa que alguns adapters são simples, mas outros exigem mapear funções com argumentos muito diferentes ou ignorar parâmetros que o novo objeto não usa.
- Se o mapeamento ficar difícil demais, a recomendação é procurar outra alternativa em vez de alterar o uso do objeto original em todo o código.
- O texto conclui que adapters são úteis e fáceis de implementar quando um factory cria o objeto substituído.
