Sobes.tech
Junior — Middle

Loyihada bog'liq bo'lganlik prinsipi amalga oshirilishining misolini bera olasizmi?

sobes.tech AI

AIdan javob

Dependency Inversion Principle (DIP) prinsipı, üst seviye modüllerin alt seviye 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 "Şəbəkədən məlumatlar"
    }
}

// Soyutlamaya bağlı olan, somut 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.