Sobes.tech
Junior — Middle

Масъул шудан ба намунаи амалишавии принсипи ислоҳоти вобастагиро дар як лоиҳа нишон диҳед?

sobes.tech AI

Ҷавоб аз AI

Принсипи иваз кардани вобастагиҳо (Dependency Inversion Principle, DIP) мегӯяд, ки модулҳои сатҳи боло бояд мустақиман ба модулҳои сатҳи поёнӣ вобаста набошанд, балки ҳарду бояд ба абстраксияҳо (масалан, протоколҳо ё интерфейсҳо) вобаста бошанд.

Масалан дар Swift барои iOS:

// Абстраксия
protocol DataService {
    func fetchData() -> String
}

// Иҷрои мушаххас
class NetworkDataService: DataService {
    func fetchData() -> String {
        return "Маълумот аз шабака"
    }
}

// Синфе, ки аз абстраксия вобаста аст, на аз иҷрои мушаххас
class ViewModel {
    private let dataService: DataService

    init(dataService: DataService) {
        self.dataService = dataService
    }

    func getData() -> String {
        return dataService.fetchData()
    }
}

// Истифода
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Натиҷа: Маълумот аз шабака

Ин ҷо, ViewModel аз протоколи DataService вобаста аст, на аз синфи NetworkDataService. Ин имкон медиҳад, ки ба осонӣ иҷрои хизматрасониро тағир дод, масалан, барои санҷишҳо ё манбаи дигар, бе тағир додани коди ViewModel.