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