Sobes.tech
Junior — Middle

Tudna példát mondani az függőségek fordított elvének valódi fejlesztésben való alkalmazására?

sobes.tech MI

Válasz az MI-től

A függőségek fordított elvének (Dependency Inversion Principle, DIP) szerint a magas szintű moduloknak nem szabad közvetlenül az alacsony szintű modulokra támaszkodniuk, hanem mindkettőnek az absztrakciókra kell támaszkodnia.

Példa Java-ban:

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

// Konkrét megvalósítás
public class EmailService implements MessageService {
    public void sendMessage(String message) {
        System.out.println("Email küldése: " + message);
    }
}

// Osztály, amely az absztrakciótól függ, nem a konkrét megvalósítástól
public class Notification {
    private MessageService service;

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

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

// Használat
public class Main {
    public static void main(String[] args) {
        MessageService emailService = new EmailService();
        Notification notification = new Notification(emailService);
        notification.notifyUser("Helló!");
    }
}

Itt a Notification osztály az MessageService interfészre támaszkodik, nem a konkrét EmailService-re. Ez lehetővé teszi a megvalósítás könnyű cseréjét (pl. SMS szolgáltatásra) anélkül, hogy módosítani kellene a Notification kódját. Ez a megközelítés javítja a kód tesztelhetőségét és bővíthetőségét.