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ę.