Inversão do contêiner de controle
-
03-07-2019 - |
Pergunta
Quais são os recursos mais importantes que um contêiner do COI deve conter? Você pode criar facilmente recipientes em 15 linhas de código, mas o que deve incluir ser "útil" em um projeto?
Solução
Este é um tópico bastante aberto e dado a muita subjetividade, mas tentarei responder de um ponto de vista muito pragmático. Dados os projetos em que trabalhei e minha experiência com o COI, eu diria que há pelo menos três biggies para procurar em termos de utilidade.
- Configuração - Qualquer COI que você usa precisa ter algum local central que permita configurar o comportamento desse contêiner. Seja um arquivo de configuração ou um bom conjunto de chamadas de API que podem ser embrulhadas em uma classe global em algum lugar, se o contêiner não for facilmente configurável, será uma dor de cabeça.
- Gerenciamento ao longo da vida - Você realmente deseja um contêiner com a capacidade de permitir a vida útil variada do objeto. Você pode querer que um determinado objeto sempre obtenha um novo iPersonCreator, mas deseja apenas um service de IPERSONSERVE a qualquer momento.
- Injeção automática de dependência - OK, então a injeção de dependência é o conceito de que o COI está construído sobre, mas você não quer ter que gerenciar isso sozinho. A idéia aqui é que, se você solicitar um iPersonCreator pela primeira vez, ela deve resolver todas as suas dependências e suas dependências e assim por diante.
No geral, o que você precisa depende do projeto, mas existem vários contêineres por aí que atenderão às suas necessidades muito bem.
Outras dicas
Em ordem decrescente de importância:
- Permitir pelo menos injeção de setter e construtor,
- Configuração separada do código,
- Permitir diferentes estilos de configuração (XML ou anotações),
Isso exigirá mais de 15 linhas de código, mas elas parecem essenciais para mim.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow