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-ით ტესტებისთვის.