Sobes.tech
Junior — Middle

Asılılıqların tərs çevrilməsi prinsipi ilə asılılıqların injeksiyası arasındakı fərqləri izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Asılılıqların Əksinə Çevrilməsi (Dependency Inversion Principle, DIP) — SOLID prinsiplərindən biridir və deyir ki:

  • Yüksək səviyyəli modullar aşağı səviyyəli modullara bağlı olmamalıdır. Hər ikisi abstraksiyalara bağlı olmalıdır.
  • Abstraksiyalar detallara bağlı olmamalıdır. Detallar abstraksiyalara bağlı olmalıdır.

Bu, kodun əlaqəliliyini azaltmağa və çevikliyi artırmağa yönəlmiş bir dizayn prinsipidir.

Asılılıqların İnjeksiyası (Dependency Injection, DI) — bu prinsipi praktikada həyata keçirən bir nümunə və ya texnikadır. DI, asılılıqların (sinif üçün lazım olan obyektlər) xaricdən ötürülməsini ifadə edir, sinif daxilində yaradılmır.

Nümunə:

protocol Service {
    func doSomething()
}

class RealService: Service {
    func doSomething() { print("Xidmətin işi") }
}

class Client {
    let service: Service

    // Asılılığın konstruktor vasitəsilə injeksiyası
    init(service: Service) {
        self.service = service
    }

    func execute() {
        service.doSomething()
    }
}

let service = RealService()
let client = Client(service: service)
client.execute()

Burada DIP — bu, Client-in Service abstraksiyasına, yəni RealService-in konkret tətbiqinə bağlı olmaması fikridir. DI — bu, konkret tətbiqin xaricdən Client-ə ötürülmə üsuludur.

Xülasə:

  • DIP — dizayn prinsipi.
  • DI — bu prinsipi həyata keçirmə üsuludur.