Sobes.tech
Junior — Middle

Explique o conceito de Injeção de Dependências e o seu papel no desenvolvimento de componentes de software

sobes.tech IA

Resposta da IA

A Injeção de Dependências (Dependency Injection) é um padrão de design em que um objeto recebe as suas dependências (por exemplo, outros objetos ou serviços) de fora, em vez de os criar por si próprio.

Papel no desenvolvimento:

  • Melhora a modularidade e a testabilidade do código: as dependências podem ser facilmente substituídas por mocks ou stubs.
  • Simplifica a gestão de dependências e a configuração de componentes.
  • Promove um baixo acoplamento entre componentes.

Exemplo: em vez de a classe criar ela mesma o objeto do serviço, ela recebe-o através do construtor ou de um setter:

class NetworkManager {
    // ...
}

class DataFetcher {
    let networkManager: NetworkManager

    init(networkManager: NetworkManager) {
        self.networkManager = networkManager
    }

    // Usa networkManager para carregar dados
}

// Ao criar DataFetcher, passamos o NetworkManager necessário
let networkManager = NetworkManager()
let fetcher = DataFetcher(networkManager: networkManager)

Este método facilita a substituição do NetworkManager por outro ou por um mock para testes.