Sobes.tech
Junior — Middle

Miért választja szét a híd mintázat az absztrakciót és a konkrét megvalósítást?

sobes.tech MI

Válasz az MI-től

A Bridge mintában az absztrakció és a konkrét megvalósítás szétválasztása lehetővé teszi azok független módosítását. Ez úgy érhető el, hogy az absztrakció egy hivatkozást tartalmaz a megvalósítás interfészére, nem pedig egy konkrét osztályra.

Az elkülönítés okai:

  • Rugalmasság: A megvalósítást módosíthatjuk anélkül, hogy az absztrakciót megváltoztatnánk, és fordítva.
  • Bővíthetőség: Új megvalósításokat és új absztrakciókat könnyen hozzáadhatunk sok alosztály nélkül.
  • Változások izolálása: A megvalósításban végzett változtatások nem befolyásolják az absztrakciót használó klienskódot.

Például, ha van egy "Alak" absztrakció és "Rajzolás a képernyőn" és "Rajzolás fájlba" megvalósítások, akkor a rajzolási módot megváltoztathatod anélkül, hogy megváltoztatnád az alak logikáját.

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ör a " + x + "," + y + " sugár " + 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);
    }
}

Így az "Circle" absztrakció nem függ a "DrawingAPI" konkrét megvalósításától, ez megkönnyíti a karbantartást és a bővítést.