Sobes.tech
Junior — Middle

Γιατί στο μοτίβο γεφυράς διαχωρίζονται η αφαιρετικότητα και η συγκεκριμένη υλοποίηση;

sobes.tech AI

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

Στο μοτίβο "Γέφυρα" (Bridge), ο διαχωρισμός της αφαιρετικότητας από την υλοποίηση επιτρέπει την ανεξάρτητη τροποποίησή τους. Αυτό επιτυγχάνεται επειδή η αφαιρετικότητα περιέχει μια αναφορά στη διεπαφή υλοποίησης, και όχι σε μια συγκεκριμένη κλάση.

Λόγοι διαχωρισμού:

  • Ευελιξία: Μπορείτε να αλλάξετε την υλοποίηση χωρίς να αλλάξετε την αφαιρετικότητα και το αντίστροφο.
  • Επεκτασιμότητα: Είναι εύκολο να προσθέσετε νέες υλοποιήσεις και νέες αφαιρέσεις χωρίς πολλές υποκλάσεις.
  • Απομόνωση αλλαγών: Οι αλλαγές στην υλοποίηση δεν επηρεάζουν τον κώδικα πελάτη που χρησιμοποιεί την αφαιρετικότητα.

Για παράδειγμα, αν έχετε μια αφαιρετικότητα "Σχήμα" και υλοποιήσεις "Ζωγραφική στην οθόνη" και "Ζωγραφική σε αρχείο", μπορείτε να αλλάξετε τον τρόπο ζωγραφικής χωρίς να αλλάξετε τη λογική του σχήματος.

interface DrawingAPI {
    void drawCircle(double x, double y, double radius);
}

class DrawingAPI1 implements DrawingAPI {
    public void drawCircle(double x, double y, double radius) {
        System.out.println("API1.κύκλος στο " + x + "," + y + " ακτίνα " + radius);
    }
}

class Circle {
    private double x, y, radius;
    private DrawingAPI drawingAPI;

    public Circle(double x, double y, double radius, DrawingAPI drawingAPI) {
        this.x = x; this.y = y; this.radius = radius; this.drawingAPI = drawingAPI;
    }

    public void draw() {
        drawingAPI.drawCircle(x, y, radius);
    }
}

Έτσι, η αφαιρετικότητα "Circle" δεν εξαρτάται από μια συγκεκριμένη υλοποίηση του "DrawingAPI", καθιστώντας τη συντήρηση και την επέκταση πιο εύκολες.