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.