Sobes.tech
Junior — Middle

Puteți explica conceptul de dependență inversă și rolul său în proiectarea sistemelor?

sobes.tech AI

Răspuns de la AI

Inversiunea controlului (IoC) este un principiu de proiectare în care gestionarea dependențelor între componentele sistemului este transferată către un container sau framework extern, în loc să fie create direct în interiorul componentelor.

Rol în proiectarea sistemelor:

  • Crește modularitatea și testabilitatea, deoarece componentele nu depind de implementări specifice, ci le primesc din exterior.
  • Facilitează înlocuirea și extinderea componentelor fără a modifica codul care le utilizează.

Exemplu: în loc ca clasa să creeze ea însăși obiectul de dependență, îl primește prin constructor sau setter. Acest lucru permite schimbarea ușoară a implementărilor, de exemplu, pentru teste.

protocol Service {
    func doWork()
}

class RealService: Service {
    func doWork() { print("Lucru realizată") }
}

class Client {
    let service: Service
    init(service: Service) {
        self.service = service
    }
}

let service = RealService()
let client = Client(service: service)

Aici, Client nu creează singur RealService, ci îl primește din exterior — aceasta este inversarea dependenței.