Sobes.tech
Junior — Middle

შეგიძლიათ პროექტში დამოკიდებულების ინვერსიის პრინციპის განხორციელების მაგალითი მიაწოდოთ?

sobes.tech AI

პასუხი AI-სგან

Dependency Inversion Principle (DIP) prinsipı şunu deyir ki, yuxarı səviyyəli modullar aşağı səviyyəli modullara birbaşa bağlı olmamalıdır, hər ikisi də abstraksiyalara (məsələn, protokollara və ya interfeyslərə) bağ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.