Junior — Middle
Bog'lanishlarning teskari aylanishi prinsipi va bog'lanishlarni injektsiya qilish o'rtasidagi farqlarni tushuntirib bera olasizmi?
sobes.tech AI
AIdan javob
Nisbataning teskari aylanishi (Dependency Inversion Principle, DIP) — bu SOLID prinsiplardan biri bo‘lib, quyidagilarni aytadi:
- Yuqori darajali modullar past darajali modullarga bog‘liq bo‘lmasligi kerak. Ikkala ham abstraktsiyalarga bog‘liq bo‘lishi kerak.
- Abstraktsiyalar detallariga bog‘liq bo‘lmasligi kerak. Detallar abstraktsiyalarga bog‘liq bo‘lishi kerak.
Bu dizayn prinsipi kodning bog‘liqligini kamaytirish va moslashuvchanligini oshirishga qaratilgan.
Bog‘liqliklarni injektsiya qilish (Dependency Injection, DI) — bu prinsipni amalda amalga oshiradigan naqsh yoki texnika. DI shuni anglatadiki, bog‘liqliklar (klass uchun kerak bo‘ladigan obyektlar) tashqaridan uzatiladi, ichida yaratilmaydi.
Misol:
protocol Service {
func doSomething()
}
class RealService: Service {
func doSomething() { print("Xizmat ishlamoqda") }
}
class Client {
let service: Service
// Bog‘liqlikni konstruktor orqali injektsiya qilish
init(service: Service) {
self.service = service
}
func execute() {
service.doSomething()
}
}
let service = RealService()
let client = Client(service: service)
client.execute()
Bu yerda DIP — bu Client Service abstraktsiyasiga, ya’ni RealService aniq amalga oshirishiga bog‘liq emasligini anglatadi. DI — bu aniq amalga oshirishni tashqaridan Clientga uzatish usuli.
Xulosa qilib aytganda:
- DIP — dizayn prinsipi.
- DI — bu prinsipni amalga oshirish usuli.