Sobes.tech
Junior — Middle

Obyektga yo'naltirilgan dasturlashda bog'liqliklarni inversiya qilish tamoyili nima ekanligini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Dependency Inversion Principle (DIP) — ob'ektga yo'naltirilgan dasturlashda SOLID besh tamoyilidan biridir. U quyidagilarni ta'kidlaydi:

  • Yuqori darajadagi modullar past darajadagi modullarga bog'liq bo'lmasligi kerak. Ikkalasi ham abstraktsiyalarga bog'liq bo'lishi kerak.
  • Abstraktsiyalar detallarga bog'liq bo'lmasligi kerak. Detallar abstraktsiyalarga bog'liq bo'lishi kerak.

Bu shuni anglatadiki, sinf to'g'ridan-to'g'ri boshqa sinflarning aniq amalga oshirishlarini yaratishi yoki ishlatishi o'rniga, u abstraktsiyalar bilan ishlashi kerak (masalan, interfeyslar yoki protokollar). Bu moslashuvchanlikni oshiradi va test qilishni osonlashtiradi.

Swift (iOS) misoli:

protocol DataService {
    func fetchData() -> String
}

class APIService: DataService {
    func fetchData() -> String {
        return "API'dan ma'lumotlar"
    }
}

class ViewModel {
    private let service: DataService

    init(service: DataService) {
        self.service = service
    }

    func load() {
        print(service.fetchData())
    }
}

let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load()  // Chiqish: API'dan ma'lumotlar

Bu yerda, ViewModel DataService abstraktsiyasiga bog'liq, va APIService ga emas. Bu xizmatni osonlik bilan almashtirish imkonini beradi, masalan, testlar uchun mock bilan.