Junior — Middle
Объектке багытталган программалоодо көзкарандычылыктарды тескери багыттоо принциби деген эмне экенин түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
Тескөөдөштөрдүн керектөөчүлүк тескөөдөштөрүнүн (Dependency Inversion Principle, DIP) объект-бағдарланган программалоонун беш принциптеринин бири. Ал мындай дейт:
- Жогорку деңгээлдеги модулдар төмөнкү деңгээлдеги модулдарга көз каранды болбошу керек. Экиси да абстракциялардан көз каранды болушу керек.
- Абстракциялар деталдардан көз каранды болбошу керек. Деталдар абстракциялардан көз каранды болушу керек.
Бул клас башка класстардын так ишке ашырмаларын түзүп же колдонбостон, абстракциялар менен иштеши керек дегенди билдирет (мисалы, интерфейстер же протоколдор). Бул ийкемдүүлүктү арттырат жана тестти жеңилдетет.
Swift (iOS) мисалы:
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "APIден маалымат"
}
}
class ViewModel {
private let service: DataService
init(service: DataService) {
self.service = service
}
func load() {
print(service.fetchData())
}
}
let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load() // Чыгуу: APIден маалымат
Мында, ViewModel DataService абстракциясына көз каранды, конкреттүү APIService эмес. Бул кызматтын ишке ашырмасын оңой алмаштырууга мүмкүндүк берет, мисалы, тесттер үчүн mock менен.