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