Sobes.tech
Junior — Middle

Mohl byste vysvětlit výhody a nevýhody použití inverze závislostí v programování?

sobes.tech AI

Odpověď od AI

Princip závislostní inverze (Dependency Inversion) je zásada, podle které vysoké úrovně moduly nezávisí na nízkých úrovních, ale oba závisí na abstrakcích.

Výhody:

  • Zlepšuje modularitu a testovatelnost kódu, protože závislosti lze snadno měnit.
  • Zvyšuje flexibilitu a rozšiřitelnost aplikace.
  • Snižuje propojenost komponent.

Nevýhody:

  • Ztěžuje architekturu, zejména v malých projektech.
  • Vyžaduje další čas na navrhování abstrakcí.
  • Může vést k nadměrnému počtu rozhraní a tříd.

Příklad v Swift:

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 getData() -> String {
        return service.fetchData()
    }
}

let apiService = APIService()
let viewModel = ViewModel(service: apiService)
print(viewModel.getData())

Zde závisí ViewModel na abstrakci DataService, nikoliv na konkrétní implementaci APIService.