Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Dependency Inversion Principle (DIP) ამბობს, რომ მაღალი დონის მოდულები არ უნდა იყოს პირდაპირ დამოკიდებული დაბალი დონის მოდულებზე, ორივე უნდა იყოს დამოკიდებული აბსტრაქციებზე.

მაგალითი Java-ში:

// აბსტრაქცია
public interface MessageService {
    void sendMessage(String message);
}

// კონკრეტული რეალიზაცია
public class EmailService implements MessageService {
    public void sendMessage(String message) {
        System.out.println("ელექტრონული ფოსტის გაგზავნა: " + message);
    }
}

// კლასი, რომელიც დამოკიდებულია აბსტრაქციაზე, არა კონკრეტულ რეალიზაციაზე
public class Notification {
    private MessageService service;

    public Notification(MessageService service) {
        this.service = service;
    }

    public void notifyUser(String message) {
        service.sendMessage(message);
    }
}

// გამოყენება
public class Main {
    public static void main(String[] args) {
        MessageService emailService = new EmailService();
        Notification notification = new Notification(emailService);
        notification.notifyUser("გამარჯობა!");
    }
}

აქ, Notification კლასი დამოკიდებულია MessageService ინტერფეისზე, არა კონკრეტულ EmailService-ზე. ეს საშუალებას იძლევა მარტივად შეიცვალოს რეალიზაცია (მაგალითად, SMS სერვისზე) Notification კოდის შეცვლის გარეშე. ეს მიდგომა აუმჯობესებს კოდის ტესტირებადობას და გაფართოებადობას.