Sobes.tech
Junior — Middle

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

sobes.tech AI

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

დამოკიდებულების გადაბრუნების პრინციპი (Dependency Inversion Principle, DIP) არის SOLID-ის ხუთი პრინციპიდან ერთ-ერთი და ამბობს, რომ:

  • მაღალ დონეზე მორგებული მოდულები არ უნდა იყოს დამოკიდებული დაბალ დონეზე მორგებულ მოდულებზე. ორივე უნდა იყოს დამოკიდებული აბსტრაქციებზე.
  • აბსტრაქციები არ უნდა იყოს დამოკიდებული დეტალებზე. დეტალები უნდა იყოს დამოკიდებული აბსტრაქციებზე.

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

C#-ის მაგალითი:

// აბსტრაქცია
public interface IMessageSender
{
    void Send(string message);
}

// კონკრეტული რეალიზაცია
public class EmailSender : IMessageSender
{
    public void Send(string message) {
        Console.WriteLine($"ელფოსტა გამოგზავნილია: {message}");
    }
}

// დამოკიდებული კლასია აბსტრაქციაზე
public class NotificationService
{
    private readonly IMessageSender _messageSender;

    public NotificationService(IMessageSender messageSender) {
        _messageSender = messageSender;
    }

    public void Notify(string message) {
        _messageSender.Send(message);
    }
}

// გამოყენება
var emailSender = new EmailSender();
var notification = new NotificationService(emailSender);
notification.Notify("გამარჯობა!");

ეს მიდგომა საშუალებას გაძლევთ ადვილად შეცვალოთ შეტყობინებების გაგზავნის რეალიზაცია, ისე რომ არ შეცვალოთ NotificationService, და ასევე ადვილად ჩაანაცვლოთ mocks ტესტებისთვის.