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