Junior — Middle
Layihədə asılılıqların tərs çevrilməsi prinsipinin tətbiqinə nümunə göstərə bilərsənmi?
sobes.tech Süni İntellekt
AI-dan cavab
Asılılıqların Əksinə Çevrilməsi Prinsipi (Dependency Inversion Principle, DIP) deyir ki, yuxarı səviyyəli modullar aşağı səviyyəli modullardan birbaşa asılı olmamalıdır, hər ikisi abstraksiyalara (məsələn, protokollara və ya interfeyslərə) asılı olmalıdır.
Swift üçün iOS-da nümunə:
// Abstraksiya
protocol DataService {
func fetchData() -> String
}
// Konkret tətbiq
class NetworkDataService: DataService {
func fetchData() -> String {
return "Şəbəkədən məlumatlar"
}
}
// Abstraksiyaya bağlı olan, konkret tətbiqə deyil
class ViewModel {
private let dataService: DataService
init(dataService: DataService) {
self.dataService = dataService
}
func getData() -> String {
return dataService.fetchData()
}
}
// İstifadə
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Çıxış: Şəbəkədən məlumatlar
Burada, ViewModel DataService protokoluna bağlıdır, NetworkDataService sinifinə deyil. Bu, servisin tətbiqini asanlıqla dəyişməyə imkan verir, məsələn, testlər və ya başqa məlumat mənbələri üçün, ViewModel kodunu dəyişmədən.