Junior — Middle
Môžete vysvetliť koncept inverznej závislosti a jeho úlohu v návrhu systémov?
sobes.tech AI
Odpoveď od AI
Inverzia kontroly (IoC) je návrhové princíp, pri ktorom sa správa závislostí medzi komponentami systému prenáša na externý kontajner alebo rámec, namiesto toho, aby bola priamo vytváraná vo vnútri komponentov.
Úloha v návrhu systémov:
- Zvyšuje modularitu a testovateľnosť, pretože komponenty nezávisia od konkrétnych implementácií, ale ich dostávajú zvonku.
- Uľahčuje výmenu a rozšírenie komponentov bez zmeny kódu, ktorý ich používa.
Príklad: namiesto toho, aby trieda sama vytvárala objekt závislosti, ho dostáva cez konštruktor alebo setter. To umožňuje ľahko meniť implementácie, napríklad pre testy.
protocol Service {
func doWork()
}
class RealService: Service {
func doWork() { print("Práca dokončená") }
}
class Client {
let service: Service
init(service: Service) {
self.service = service
}
}
let service = RealService()
let client = Client(service: service)
Tu, Client nevytvára sám RealService, ale ho dostáva zvonku — toto je inverzia závislosti.