Junior — Middle
შეგიძლიათ ახსნათ დამოკიდებულების ინვერსიის პრინციპის და დამოკიდებულების ინექციის განსხვავებები?
sobes.tech AI
პასუხი AI-სგან
დამოკიდებულებების უკუღმართობა (Dependency Inversion Principle, DIP) — არის SOLID პრინციპებიდან ერთ-ერთი და ამბობს, რომ:
- მაღალი დონის მოდულები არ უნდა იყოს დამოკიდებული დაბალი დონის მოდულებზე. ორივე უნდა იყოს დამოკიდებული აბსტრაქციებზე.
- აბსტრაქციები არ უნდა იყოს დამოკიდებული დეტალებზე. დეტალები უნდა იყოს დამოკიდებული აბსტრაქციებზე.
ეს არის დიზაინის პრინციპი, რომელიც მიზნად ისახავს კოდის კავშირების შემცირებას და მოქნილობის გაზრდას.
დამოკიდებულებების ინექცია (Dependency Injection, DI) — არის ნიმუში ან ტექნიკა, რომელიც პრაქტიკაში ახორციელებს ამ პრინციპს. DI ნიშნავს, რომ დამოკიდებულებები (ობიექტები, რომლებიც კლასს სჭირდება მუშაობისთვის) გარედან გადაეცემა, არ იქმნება კლასის შიგნით.
მაგალითი:
protocol Service {
func doSomething()
}
class RealService: Service {
func doSomething() { print("სერვისის სამუშაო") }
}
class Client {
let service: Service
// დამოკიდებულების ინექცია კონსტრუქტორით
init(service: Service) {
self.service = service
}
func execute() {
service.doSomething()
}
}
let service = RealService()
let client = Client(service: service)
client.execute()
აქ, DIP — ეს იდეაა, რომ Client დამოკიდებულია აბსტრაქციაზე Service, არა კონკრეტულ რეალიზაციაზე RealService. DI — ეს მეთოდია, როგორ გადაეცემა კონკრეტული რეალიზაცია გარედან Client-ს.
საგ summary:
- DIP — დიზაინის პრინციპი.
- DI — ამ პრინციპის განხორციელების მეთოდი.