Sobes.tech
Junior — Middle

Puteți explica ce înseamnă principiul inversiunii dependențelor în programarea orientată pe obiecte?

sobes.tech AI

Răspuns de la AI

Principiul inversiunii dependențelor (Dependency Inversion Principle, DIP) este unul dintre cele cinci principii SOLID în programarea orientată pe obiecte. Acesta afirmă:

  • Modulele de nivel înalt nu trebuie să depindă de modulele de nivel scăzut. Ambele trebuie să depindă de abstracții.
  • Abstracțiile nu trebuie să depindă de detalii. Detaliile trebuie să depindă de abstracții.

Aceasta înseamnă că, în loc ca o clasă să creeze sau să utilizeze direct implementări concrete ale altor clase, ea trebuie să lucreze cu abstracții (de exemplu, interfețe sau protocoale). Acest lucru crește flexibilitatea și facilitează testarea.

Exemplu în Swift (iOS):

protocol DataService {
    func fetchData() -> String
}

class APIService: DataService {
    func fetchData() -> String {
        return "Date din 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()  // Va afișa: Date din API

Aici, ViewModel depinde de abstracția DataService, nu de implementarea concretă APIService. Acest lucru permite înlocuirea ușoară a implementării serviciului, de exemplu, cu un mock pentru teste.