Sobes.tech
Junior — Middle

Μπορείτε να δώσετε ένα παράδειγμα χρήσης της αρχής της αντιστροφής των εξαρτήσεων σε μια πραγματική ανάπτυξη;

sobes.tech AI

Απάντηση από AI

Η Αρχή της Αντιστροφής των Εξαρτήσεων (Dependency Inversion Principle, DIP) δηλώνει ότι τα υψηλού επιπέδου modules δεν πρέπει να εξαρτώνται άμεσα από τα χαμηλού επιπέδου modules, αλλά και τα δύο πρέπει να εξαρτώνται από αφαιρέσεις.

Παράδειγμα σε Java:

// Αφαίρεση
public interface MessageService {
    void sendMessage(String message);
}

// Συγκεκριμένη υλοποίηση
public class EmailService implements MessageService {
    public void sendMessage(String message) {
        System.out.println("Αποστολή email: " + 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. Αυτή η προσέγγιση βελτιώνει τη δοκιμαστικότητα και την επεκτασιμότητα του κώδικα.