Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ უკუღმართ დამოკიდებულების კონცეფცია და მისი როლი სისტემების დიზაინში?

sobes.tech AI

პასუხი AI-სგან

კონტროლის გადაბრუნება (IoC) — ეს არის დიზაინის პრინციპი, რომლის დროსაც სისტემის კომპონენტებს შორის დამოკიდებულებების მართვა გადაეცემა გარეგან კონტეინერს ან ჩარჩოს, ხოლო არა პირდაპირ კომპონენტების შიგნით შექმნილი.

სისტემის დიზაინში როლი:

  • ზრდის მოდულარობას და ტესტირებადობას, რადგან კომპონენტები არ არიან დამოკიდებული კონკრეტულ რეალიზაციებზე, არამედ იღებენ მათ გარედან.
  • ადვილად იცვლება და გაფართოვდება კომპონენტები, ისე რომ არ შეიცვალოს კოდი, რომელიც მათ იყენებს.

მაგალითი: ნაცვლად იმისა, რომ კლასი თავად შექმნას დამოკიდებულების ობიექტი, ის იღებს მას კონსტრუქტორით ან სეტტერით. ეს საშუალებას აძლევს მარტივად შეცვალოს რეალიზაციები, მაგალითად, ტესტებისთვის.

protocol Service {
    func doWork()
}

class RealService: Service {
    func doWork() { print("სამუშაო დასრულდა") }
}

class Client {
    let service: Service
    init(service: Service) {
        self.service = service
    }
}

let service = RealService()
let client = Client(service: service)

აქ, Client-ი თვითონ არ ქმნის RealService-ს, არამედ იღებს მას გარედან — ეს არის დამოკიდებულების გადაბრუნება.