Executando verificação de segurança...
1

Seu raciocínio está no caminho correto.

Acho que consigo ajudar a esclarecer alguns detalhes.

De fato, apesar de inversão de dependência (o "D" no SOLID) e injeção de dependência terem relação estreita um com o outro, como você mesmo observou, são coisas diferentes.

Inversão de dependência é sobre fazer seus serviços (palavra guarda-chuva pra significar funções, classes, objetos) não dependerem diretamente de implementações concretas, mas sim de abstrações, de maneira que um determinado serviço não conheça diretamente as dependências que está utilizando.

Injeção de dependência é uma técnica específica que pode ser utilizada pra alcançarmos a inversão de dependências, mas, dito isto, é possível usar injeção de dependência sem necessariamente estar "invertendo" elas.

Inclusive, na forma específica de injetar dependências que eu mostrei, acontece justamente isto, estamos injetando dependências sem inverter elas, dado que pelo fato desta injeção acontecer no mesmo arquivo que o serviço está sendo implementado, o serviço sabe exatamente quem são as suas dependêndencias e onde elas se encontram.

Isto foi proposital, porque como eu queria fazer uma breve introdução à injeção de dependência, achei mais proveitoso mostrar a técnica de um jeito que, ainda que simplificado, vai trazer vários benefícios.

Para alcançarmos inversão de dependências usando DI, a gente invariavelmente vai acabar caindo na necessidade de ter um container, que é o único lugar que vai saber sobre as implementações concretas de todas as dependências e vai plugar elas todas.

Mas ó, um ponto interessante é que não necessariamente a gente precisa de uma lib/framework de injeção de dependência pra termos um container, dá pra gente montar um container manualmente.

No artigo que eu citei no final do post, eu dou alguns exemplos disto: https://blog.codeminer42.com/dependency-injection-in-js-ts-part-1/

Carregando publicação patrocinada...