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.