Sobes.tech
Junior — Middle

Можете ли да објасните предности и недостатке коришћења инверзије зависности у програмирању?

sobes.tech АИ

Одговор од АИ

Inverzija zavisnosti (Dependency Inversion) je princip, prema kojem visoko nivo modula ne zavisi od nisko nivo modula, već oba zavise od apstrakcija.

Prednosti:

  • Poboljšava modularnost i testabilnost koda, jer se zavisnosti lako mogu zameniti.
  • Povećava fleksibilnost i proširivost aplikacije.
  • Smanjuje povezanost komponenti.

Nedostaci:

  • Komplikuje arhitekturu, posebno u malim projektima.
  • Zahteva dodatno vreme za projektovanje apstrakcija.
  • Može dovesti do prevelikog broja interfejsa i klasa.

Primer u Swift:

protocol DataService {
    func fetchData() -> String
}

class APIService: DataService {
    func fetchData() -> String {
        return "Podaci sa 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())

Ovde, ViewModel zavisi od apstrakcije DataService, a ne od konkretne implementacije APIService.