Junior — Middle
Կարող եք բացատրել կախվածությունների հակադարձման սկզբունքի և կախվածությունների ներմուծման տարբերությունները:
sobes.tech AI
Պատասխան AI-ից
Անհրաժեշտությունների հակադարձում (Principle of Dependency Inversion, DIP) — դա SOLID սկզբունքներից մեկն է, որը ասում է, որ՝
- Բարձր մակարդակի մոդուլները չպետք է կախված լինեն ցածր մակարդակի մոդուլներից։ Երկուսն էլ պետք է կախված լինեն աբստրակցիաներից։
- Աբստրակցիաները չպետք է կախված լինեն մանրամասներից։ Մանրամասները պետք է կախված լինեն աբստրակցիաներից։
Սա նախագծման սկզբունք է, որը նպատակ ունի նվազեցնել կապակցվածությունը և բարձրացնել կոդի ճկունությունը։
Ավելի կախվածությունների ներդրում (Dependency Injection, DI) — դա օրինակ կամ տեխնիկա է, որը իրականացնում է այս սկզբունքը գործնականում։ DI նշանակում է, որ կախվածությունները (օբյեկտներ, որոնք անհրաժեշտ են դասին աշխատանքի համար) փոխանցվում են արտաքինից, ոչ թե ստեղծվում են դասի ներսում։
Օրինակ՝
protocol Service {
func doSomething()
}
class RealService: Service {
func doSomething() { print("Ծառայության աշխատանք") }
}
class Client {
let service: Service
// Կապվածության ներդրում կոնստրուկտորով
init(service: Service) {
self.service = service
}
func execute() {
service.doSomething()
}
}
let service = RealService()
let client = Client(service: service)
client.execute()
Այստեղ DIP-ը գաղափար է, որ Client-ը կախված է աբստրակցիա Service-ից, ոչ թե կոնկրետ իրականացմանից RealService։ DI-ն այն միջոցն է, որով կոնկրետ իրականացումը փոխանցվում է Client-ին արտաքինից։
Ամփոփում՝
- DIP — նախագծման սկզբունք։
- DI — այս սկզբունքը իրականացնելու միջոց։