Sobes.tech
Junior — Middle
91

Dlaczego w wzorcu mostu oddziela się abstrakcję od konkretnej implementacji?

Firmy, w których zadano pytania
СБЕРСБЕР

Odpowiedź od AI

sobes.tech AI

W wzorcu "Most" (Bridge) oddzielenie abstrakcji od konkretnej implementacji pozwala na ich niezależną zmianę. Osiąga się to dzięki temu, że abstrakcja zawiera odwołanie do interfejsu implementacji, a nie do konkretnej klasy.

Przyczyny oddzielenia:

  • Elastyczność: Można zmieniać implementację bez zmiany abstrakcji i odwrotnie.
  • Rozszerzalność: Łatwo dodawać nowe implementacje i nowe abstrakcje bez wielu podklas.
  • Izolacja zmian: Zmiany w implementacji nie wpływają na kod klienta korzystającego z abstrakcji.

Na przykład, jeśli masz abstrakcję "Figura" i implementacje "Rysowanie na ekranie" oraz "Rysowanie do pliku", możesz zmieniać sposób rysowania bez zmiany logiki figury.

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.kółko w " + x + "," + y + " promień " + 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);
    }
}

W ten sposób, abstrakcja Circle nie zależy od konkretnej implementacji DrawingAPI, co ułatwia utrzymanie i rozbudowę.