Sobes.tech
Junior — Middle

Bağımlılıkların Ters Çevirme Prensibi ile Bağımlılık Enjeksiyonu arasındaki farkları açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bağımlılıkların Tersine Çevrilmesi (Dependency Inversion Principle, DIP) — SOLID ilkelerinden biridir ve şunu söyler:

  • Yüksek seviyeli modüller düşük seviyeli modüllere bağlı olmamalıdır. Her ikisi de soyutlamalara bağlı olmalıdır.
  • Soyutlamalar detaylara bağlı olmamalıdır. Detaylar soyutlamalara bağlı olmalıdır.

Bu, kodun bağlılığını azaltmaya ve esnekliği artırmaya yönelik bir tasarım ilkesidir.

Bağımlılık Enjeksiyonu (Dependency Injection, DI) — bu ilkeyi pratikte uygulayan bir desen veya tekniktir. DI, bağımlılıkların (bir sınıfın çalışması için gereken nesneler) dışarıdan iletildiği anlamına gelir, sınıf içinde oluşturulmaz.

Örnek:

protocol Service {
    func doSomething()
}

class RealService: Service {
    func doSomething() { print("Servis çalışıyor") }
}

class Client {
    let service: Service

    // Bağımlılık enjeksiyonu yapıcı aracılığıyla
    init(service: Service) {
        self.service = service
    }

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

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

Burada DIP, Client'in gerçek bir uygulama olan RealService'den çok, soyutlama olan Service'e bağlı olması fikridir. DI, gerçek uygulamayı dışarıdan Client'a iletme yöntemidir.

Özetle:

  • DIP — tasarım ilkesi.
  • DI — bu ilkeyi uygulama yöntemidir.