Sobes.tech
Junior — Middle

Ar galite paaiškinti priklausomybių inversijos principo ir priklausomybių injekcijos skirtumus?

sobes.tech AI

Atsakymas iš AI

Priešingybės inversijos principas (Dependency Inversion Principle, DIP) — yra vienas iš SOLID principų, kuris sako, kad:

  • Aukšto lygio moduliai neturėtų priklausyti nuo žemo lygio modulių. Abu turėtų priklausyti nuo abstrakcijų.
  • Abstrakcijos neturėtų priklausyti nuo detalių. Detalės turėtų priklausyti nuo abstrakcijų.

Tai yra dizaino principas, skirtas sumažinti priklausomybę ir padidinti kodo lankstumą.

Priklausomybių injekcija (Dependency Injection, DI) — yra modelis arba technika, kuri įgyvendina šį principą praktikoje. DI reiškia, kad priklausomybės (objektai, reikalingi klasei darbui) yra perduodamos iš išorės, o ne kuriamos klasės viduje.

Pavyzdys:

protocol Service {
    func doSomething()
}

class RealService: Service {
    func doSomething() { print("Paslaugos darbas") }
}

class Client {
    let service: Service

    // Priklausomybės injekcija per konstruktorių
    init(service: Service) {
        self.service = service
    }

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

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

Čia DIP — tai idėja, kad Client priklauso nuo abstrakcijos Service, o ne nuo konkrečios RealService realizacijos. DI — tai būdas perduoti konkrečią realizaciją iš išorės į Client.

Apibendrinant:

  • DIP — dizaino principas.
  • DI — būdas įgyvendinti šį principą.