Sobes.tech
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.