Sobes.tech
Junior — Middle

Mohol by ste vysvetliť výhody a nevýhody použitia invertovania závislostí v programovaní?

sobes.tech AI

Odpoveď od AI

Inverzia závislostí (Dependency Inversion) je princíp, podľa ktorého vysoké úrovne moduly nezávisia od nízkych úrovní, ale obe závisia od abstrakcií.

Výhody:

  • Zlepšuje modularitu a testovateľnosť kódu, pretože závislosti je možné ľahko meniť.
  • Zvyšuje flexibilitu a rozšíriteľnosť aplikácie.
  • Znižuje prepojenosť komponentov.

Nevýhody:

  • Zložitá architektúra, najmä v malých projektoch.
  • Vyžaduje ďalší čas na navrhovanie abstrakcií.
  • Môže viesť k nadmernému počtu rozhraní a tried.

Príklad v Swift:

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

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

Tu závisí ViewModel od abstrakcie DataService, nie od konkrétnej implementácie APIService.