Sobes.tech
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.