Sobes.tech
Junior — Middle

Kunt u het verschil uitleggen tussen het principe van afhankelijkheidsomkering en afhankelijkheidsinjectie?

sobes.tech AI

Antwoord van AI

Dependency Inversion Principle (DIP) — is een van de SOLID-principes, die zegt dat:

  • Hoge-niveau modules niet afhankelijk moeten zijn van lage-niveau modules. Beide moeten afhankelijk zijn van abstracties.
  • Abstracties mogen niet afhankelijk zijn van details. Details moeten afhankelijk zijn van abstracties.

Dit is een ontwerpprincipe dat gericht is op het verminderen van koppeling en het vergroten van flexibiliteit van de code.

Dependency Injection (DI) — is een patroon of techniek die het principe van afhankelijkheidsomkering in de praktijk brengt. DI betekent dat afhankelijkheden (objecten die een klasse nodig heeft om te werken) van buitenaf worden doorgegeven, in plaats van binnen de klasse te worden gemaakt.

Voorbeeld:

protocol Service {
    func doSomething()
}

class RealService: Service {
    func doSomething() { print("Werk van de service") }
}

class Client {
    let service: Service

    // Dependency injectie via de constructor
    init(service: Service) {
        self.service = service
    }

    func execute() {
        service.doSomething()
    }
}

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

Hier is DIP het idee dat Client afhankelijk is van de abstractie Service, en niet van de concrete implementatie RealService. DI is de manier om de concrete implementatie aan Client door te geven van buitenaf.

Samenvatting:

  • DIP — ontwerpprincipe.
  • DI — manier om dit principe te implementeren.