Junior — Middle
Môžete vysvetliť, čo znamená princíp invertovania závislostí v objektovo orientovanom programovaní?
sobes.tech AI
Odpoveď od AI
Princip obrácania závislostí (Dependency Inversion Principle, DIP) je jeden zo štyroch SOLID princípov v objektovo orientovanom programovaní. Hovorí:
- Moduly vysokého stupňa by nemali závisieť od modulov nízkeho stupňa. Oba by mali závisieť od abstrakcií.
- Abstrakcie by nemali závisieť od detailov. Detaily by mali závisieť od abstrakcií.
To znamená, že namiesto toho, aby trieda priamo vytvárala alebo používala konkrétne implementácie iných tried, mala by pracovať s abstrakciami (napríklad rozhraniami alebo protokolmi). To zvyšuje flexibilitu a uľahčuje testovanie.
Príklad v Swift (iOS):
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Dáta z API"
}
}
class ViewModel {
private let service: DataService
init(service: DataService) {
self.service = service
}
func load() {
print(service.fetchData())
}
}
let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load() // Výstup: Dáta z API
Tu závisí ViewModel od abstrakcie DataService, nie od konkrétnej implementácie APIService. To umožňuje ľahko nahradiť implementáciu služby, napríklad s mockom pre testovanie.