Junior — Middle
Můžete vysvětlit, co se rozumí principem inverze závislostí v objektově orientovaném programování?
sobes.tech AI
Odpověď od AI
Princip principu obrácení závislostí (Dependency Inversion Principle, DIP) je jedním z pěti principů SOLID v objektově orientovaném programování. Říká:
- Moduly vysoké úrovně by neměly záviset na modulech nízké úrovně. Oba by měly záviset na abstrakcích.
- Abstrakce by neměly záviset na detailech. Detaily by měly záviset na abstrakcích.
To znamená, že místo toho, aby třída přímo vytvářela nebo používala konkrétní implementace jiných tříd, měla by pracovat s abstrakcemi (například rozhraními nebo protokoly). To zvyšuje flexibilitu a usnadňuje testování.
Příklad v Swift (iOS):
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Data 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: Data z API
Zde závisí ViewModel na abstrakci DataService, nikoliv na konkrétní implementaci APIService. To umožňuje snadno nahradit implementaci služby, například mockem pro testování.