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-ով թեստերի համար: