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.