Sobes.tech
Junior — Middle

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

sobes.tech АИ

Одговор од АИ

Inverzija kontrole (IoC) je načelo dizajna u kojem se upravljanje zavisnostima između komponenti sistema prenosi na eksterni kontejner ili okvir, a ne kreira se direktno unutar komponenti.

Uloga u dizajnu sistema:

  • Povećava modularnost i testabilnost, jer komponente ne zavise od specifičnih implementacija, već ih dobijaju spolja.
  • Olakšava zamenu i proširenje komponenti bez promene koda koji ih koristi.

Primer: umesto da klasa sama kreira objekat zavisnosti, ona ga dobija putem konstruktora ili settera. Ovo omogućava lako menjanje implementacija, na primer za testove.

protocol Service {
    func doWork()
}

class RealService: Service {
    func doWork() { print("Rad završen") }
}

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

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

Ovde, Client ne kreira sam RealService, već ga dobija spolja — to je inverzija zavisnosti.