Junior — Middle
Tudsz példát adni arra, hogyan valósítható meg a függőségek fordított irányának elve egy projektben?
sobes.tech MI
Válasz az MI-től
A függőség fordított elve (Dependency Inversion Principle, DIP) kimondja, hogy a magasabb szintű moduloknak nem szabad közvetlenül az alacsonyabb szintű modulokra támaszkodniuk, hanem mindkettőnek az absztrakciókra (például protokollokra vagy interfészekre) kell támaszkodnia.
Swift példában iOS-re:
// Absztrakció
protocol DataService {
func fetchData() -> String
}
// Konkrét megvalósítás
class NetworkDataService: DataService {
func fetchData() -> String {
return "Hálózati adatok"
}
}
// Osztály, amely az absztrakciótól függ, nem a konkrét implementációtól
class ViewModel {
private let dataService: DataService
init(dataService: DataService) {
self.dataService = dataService
}
func getData() -> String {
return dataService.fetchData()
}
}
// Használat
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Kiírja: Hálózati adatok
Itt a ViewModel az DataService protokolltól függ, nem a NetworkDataService osztálytól. Ez lehetővé teszi, hogy könnyen cseréljük a szolgáltatás implementációját, például teszteléshez vagy más adatforráshoz, anélkül, hogy módosítanánk a ViewModel kódját.