Junior — Middle
Можете ли објаснити разлике између принципа инверзије зависности и убризгавања зависности?
sobes.tech АИ
Одговор од АИ
Princip inverzije zavisnosti (Princip inverzije zavisnosti, DIP) — jedan je od SOLID principa, koji kaže da:
- Moduli visokog nivoa ne bi trebalo da zavise od modula niskog nivoa. Oba treba da zavise od apstrakcija.
- Apstrakcije ne bi trebalo da zavise od detalja. Detalji treba da zavise od apstrakcija.
Ovo je princip dizajna koji ima za cilj smanjenje povezanosti i povećanje fleksibilnosti koda.
Umetanje zavisnosti (Dependency Injection, DI) — je obrazac ili tehnika koja implementira princip inverzije zavisnosti u praksi. DI znači da se zavisnosti (objekti koji su potrebni klasi za rad) prosleđuju spolja, a ne kreiraju unutar klase.
Primer:
protocol Service {
func doSomething()
}
class RealService: Service {
func doSomething() { print("Rad servisa") }
}
class Client {
let service: Service
// Umetanje zavisnosti putem konstruktora
init(service: Service) {
self.service = service
}
func execute() {
service.doSomething()
}
}
let service = RealService()
let client = Client(service: service)
client.execute()
Ovde, DIP je ideja da Client zavisi od apstrakcije Service, a ne od konkretne implementacije RealService. DI je način prosleđivanja konkretne implementacije u Client spolja.
Rezime:
- DIP — princip dizajna.
- DI — način implementacije ovog principa.