Junior — Middle
Можете ли објаснити шта подразумева принцип инверзије зависности у објектно-оријентисаном програмирању?
sobes.tech АИ
Одговор од АИ
Princip inverzije zavisnosti (Dependency Inversion Principle, DIP) jedan je od pet SOLID principa u objektno-orijentisanom programiranju. On kaže:
- Moduli visokog nivoa ne bi trebalo da zavise od modula niskog nivoa. Oba treba da zavise od apstrakcija.
- Apstrakcije ne bi trebalo da zavise od detalja. Detalji treba da zavise od apstrakcija.
To znači da, umesto da klasa direktno kreira ili koristi konkretne implementacije drugih klasa, ona treba da radi sa apstrakcijama (npr. interfejsima ili protokolima). To povećava fleksibilnost i olakšava testiranje.
Primer u Swift-u (iOS):
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Podaci sa API-ja"
}
}
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() // Ispis: Podaci sa API-ja
Ovde, ViewModel zavisi od apstrakcije DataService, a ne od konkretne implementacije APIService. To omogućava lako zamenjivanje implementacije servisa, na primer, sa mock-om za testiranje.