Sobes.tech
Junior — Middle

Como implementou o mecanismo de Dependency Injection nos seus projetos?

sobes.tech IA

Resposta da IA

Nos meus projetos de iOS, implementei a Injeção de Dependências (DI) para melhorar a modularidade e a testabilidade do código. Normalmente usava a injeção por construtor, onde as dependências são passadas através do inicializador da classe. Por exemplo, se tenho uma classe ViewModel que depende de um serviço APIService, passo esse serviço através do inicializador:

class APIService {
    func fetchData() { /* ... */ }
}

class ViewModel {
    private let apiService: APIService

    init(apiService: APIService) {
        self.apiService = apiService
    }

    func loadData() {
        apiService.fetchData()
    }
}

// Uso
let service = APIService()
let viewModel = ViewModel(apiService: service)

Também utilizei a injeção por propriedade, onde as dependências são definidas através de propriedades, e às vezes usei um Localizador de Serviços para gerenciar as dependências de forma centralizada, mas tentei evitá-lo devido à complexidade dos testes. Em projetos grandes, usei contêineres DI, como Swinject, para resolver automaticamente as dependências.