Sobes.tech
Junior — Middle

Ar galite pateikti pavyzdį, kaip taikyti priklausomybių inversijos principą realiame programavime?

sobes.tech AI

Atsakymas iš AI

Priklausomybės inversijos principas (Dependency Inversion Principle, DIP) sako, kad aukšto lygio moduliai neturėtų tiesiogiai priklausyti žemo lygio moduliams, o abu turėtų priklausyti nuo abstrakcijų.

Pavyzdys Java:

// Abstrakcija
public interface MessageService {
    void sendMessage(String message);
}

// Konkretus įgyvendinimas
public class EmailService implements MessageService {
    public void sendMessage(String message) {
        System.out.println("Siunčiama el. pašto žinutė: " + message);
    }
}

// Klasė, priklausanti nuo abstrakcijos, o ne nuo konkrečios įgyvendinimo
public class Notification {
    private MessageService service;

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

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

// Naudojimas
public class Main {
    public static void main(String[] args) {
        MessageService emailService = new EmailService();
        Notification notification = new Notification(emailService);
        notification.notifyUser("Labas!");
    }
}

Čia, Notification klasė priklauso nuo MessageService sąsajos, o ne nuo konkrečios EmailService įgyvendinimo. Tai leidžia lengvai keisti įgyvendinimą (pavyzdžiui, SMS paslaugą) be Notification kodo keitimo. Šis požiūris pagerina kodo testavimą ir plėtrą.