Sobes.tech
Junior — Middle

Vysvětlete koncept Dependency Injection a jeho roli ve vývoji softwarových komponent

sobes.tech AI

Odpověď od AI

Injekce závislostí (Dependency Injection) je návrhový vzor, při kterém objekt získává své závislosti (například jiné objekty nebo služby) zvenčí, místo toho, aby je sám vytvářel.

Role ve vývoji:

  • Zvyšuje modularitu a testovatelnost kódu: závislosti lze snadno nahradit za mocky nebo stuby.
  • Zjednodušuje správu závislostí a konfiguraci komponent.
  • Podporuje slabé propojení mezi komponentami.

Příklad: místo toho, aby třída sama vytvářela objekt služby, přijímá ho přes konstruktor nebo setter:

class NetworkManager {
    // ...
}

class DataFetcher {
    let networkManager: NetworkManager

    init(networkManager: NetworkManager) {
        self.networkManager = networkManager
    }

    // Používá networkManager pro načítání dat
}

// Při vytváření DataFetcher předáváme potřebný NetworkManager
let networkManager = NetworkManager()
let fetcher = DataFetcher(networkManager: networkManager)

Tento přístup usnadňuje výměnu NetworkManager za jiný nebo za mock pro testování.