18.9. Plugin
Liga a implementação por configuração, não por compilação.
Resumo
- Liga classes durante a configuração, não na compilação.
- Uma factory lê arquivo/variável de ambiente e instancia a implementação de uma Separated Interface.
- Ex.: gerador de ids em memória nos testes, sequência do banco em produção.
- Evita
if (ambiente == teste)espalhados e recompilação por ambiente. - Precisa de linguagem com instanciação dinâmica (reflexão) ou injeção de dependência.
Perguntas-chave
responda de cabeça, depois abraQual a diferença entre Plugin e Separated Interface?
Separated Interface define onde fica a interface; Plugin define como a implementação é escolhida (configuração).
Qual problema o Plugin resolve?
Escolher implementações por ambiente sem condicionais nem recompilação.
Do que a linguagem precisa?
De algum mecanismo para instanciar classes por nome (reflexão) ou de um contêiner de DI.
Exercícios de fixação
0/5 respondidas1.
Um arquivo
config.properties diz IdGenerator=TestIdGenerator no teste e OracleIdGenerator na produção; uma factory instancia a classe. Qual padrão?2.
Que código o Plugin elimina?
3.
Plugin geralmente trabalha junto com:
4.
Qual recurso de linguagem facilita implementar Plugin?
5.
Qual a vantagem de escolher implementações por configuração?