Sobes.tech
Junior — Middle

Կարող եք բացատրել կախվածությունների հակադարձման սկզբունքի և կախվածությունների ներմուծման տարբերությունները ծրագրավորման մեջ:

sobes.tech AI

Պատասխան AI-ից

Ավելի բարձր մակարդակի մոդուլները չպետք է ուղղակիորեն կախված լինեն ցածր մակարդակի մոդուլներից, այլ երկուսն էլ պետք է կախված լինեն աբստրակցիաներից (օրինակ, ինտերֆեյսներից): Աբստրակցիաները չպետք է կախված լինեն մանրամասներից, մանրամասները պետք է կախված լինեն աբստրակցիաներից: Սա օգնում է դարձնել ճարտարապետությունը ավելի ճկուն և հեշտ ընդլայնելի:

Ավելի կախվածության մուտքագրման (Dependency Injection, DI) կոնկրետ օրինակ կամ տեխնիկա է, որը իրականացնում է այս սկզբունքը: DI նշանակում է, որ օբյեկտի կախվածությունները փոխանցվում են նրա արտաքինից (օրինակ, կոնստրուկտորով, սեթթերով կամ մեթոդով), և չեն ստեղծվում օբյեկտի ներսում: Սա հեշտացնում է թեստավորումը և կոմպոնենտների փոխարինումը:

Անհատական օրինակ Swift-ում:

protocol NetworkService {
    func fetchData()
}

class APIService: NetworkService {
    func fetchData() {
        print("API-ից տվյալների ստացում")
    }
}

class ViewModel {
    let networkService: NetworkService

    // Կոնստրուկտորով կախվածության մուտքագում
    init(networkService: NetworkService) {
        self.networkService = networkService
    }

    func load() {
        networkService.fetchData()
    }
}

let apiService = APIService()
let viewModel = ViewModel(networkService: apiService)
viewModel.load()