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.