Junior — Middle
Bir projede bağımlılıkların tersine çevrilmesi ilkesinin uygulanmasına bir örnek verebilir misin?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bağımlılıkların Tersine Çevirme Prensibi (Dependency Inversion Principle, DIP), üst düzey modüllerin alt düzey modüllere doğrudan bağlı olmaması gerektiğini, her ikisinin de soyutlamalara (örneğin, protokollere veya arayüzlere) bağlı olması gerektiğini söyler.
Swift için iOS'ta örnek:
// Soyutlama
protocol DataService {
func fetchData() -> String
}
// Somut uygulama
class NetworkDataService: DataService {
func fetchData() -> String {
return "Ağdan veriler"
}
}
// Soyutlamaya bağlı olan, somut uygulamaya değil
class ViewModel {
private let dataService: DataService
init(dataService: DataService) {
self.dataService = dataService
}
func getData() -> String {
return dataService.fetchData()
}
}
// Kullanım
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Çıktı: Ağdan veriler
Burada, ViewModel DataService protokolüne bağlıdır, NetworkDataService sınıfına değil. Bu, servisin uygulamasını kolayca değiştirmeye olanak tanır, örneğin testler veya başka bir veri kaynağı için, ViewModel kodunu değiştirmeden.