Junior — Middle
Ako ste implementovali mechanizmus Dependency Injection vo vašich projektoch?
sobes.tech AI
Odpoveď od AI
Vo svojich iOS projektoch som implementoval Dependency Injection (DI) na zvýšenie modularity a testovateľnosti kódu. Zvyčajne som používal injekciu cez konštruktor, keď sa závislosti odovzdávajú cez inicializátor triedy. Napríklad, ak mám triedu ViewModel, ktorá závisí od služby APIService, túto službu odovzdávam cez inicializátor:
class APIService {
func fetchData() { /* ... */ }
}
class ViewModel {
private let apiService: APIService
init(apiService: APIService) {
self.apiService = apiService
}
func loadData() {
apiService.fetchData()
}
}
// Použitie
let service = APIService()
let viewModel = ViewModel(apiService: service)
Tiež som používal Property Injection, keď sa závislosti nastavujú cez vlastnosti, a občas som využíval Service Locator na centralizované riadenie závislostí, ale snažil som sa tomu vyhýbať kvôli zložitosti testovania. Vo veľkých projektoch som používal DI kontajnery ako Swinject na automatické riešenie závislostí.