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