Sobes.tech
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.