Junior — Middle
Vai vari sniegt piemēru, kā īstenot atkarību inversijas principu projektā?
sobes.tech AI
Atbilde no AI
Atkarības inversijas princips (Dependency Inversion Principle, DIP) nosaka, ka augstākā līmeņa moduļiem nevajadzētu tieši atkarīties no zemākā līmeņa moduļiem, bet gan abi jāatkarās no abstrakcijām (piemēram, protokoliem vai interfeisiem).
Piemērs Swift valodā iOS:
// Abstrakcija
protocol DataService {
func fetchData() -> String
}
// Konkrēta realizācija
class NetworkDataService: DataService {
func fetchData() -> String {
return "Tīkla dati"
}
}
// Klase, kas atkarīga no abstrakcijas, nevis no konkrētas realizācijas
class ViewModel {
private let dataService: DataService
init(dataService: DataService) {
self.dataService = dataService
}
func getData() -> String {
return dataService.fetchData()
}
}
// Izmantošana
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Izdrukās: Tīkla dati
Šeit, ViewModel ir atkarīgs no DataService protokola, nevis no konkrētas NetworkDataService klases. Tas ļauj viegli mainīt pakalpojuma realizāciju, piemēram, testiem vai citam datu avotam, nemainot ViewModel kodu.