Junior — Middle
De ce în pattern-ul pod se separă abstracția de implementarea concretă?
sobes.tech AI
Răspuns de la AI
În modelul "Pod" (Bridge), separarea abstracției de implementarea concretă permite modificarea lor independentă. Acest lucru se realizează deoarece abstracția conține o referință la interfața de implementare, nu la o clasă concretă.
Motivul separării:
- Flexibilitate: Se poate schimba implementarea fără a modifica abstracția și invers.
- Extensibilitate: Este ușor să adaugi noi implementări și noi abstracții fără multiple subclase.
- Izolare a modificărilor: Modificările în implementare nu afectează codul client care utilizează abstracția.
De exemplu, dacă ai o abstracție "Figură" și implementări "Desen pe ecran" și "Desen în fișier", poți schimba modul de desenare fără a modifica logica figurii.
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.cerc pe " + x + "," + y + " rază " + 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);
}
}
Astfel, abstracția "Circle" nu depinde de o implementare concretă a "DrawingAPI", ceea ce facilitează întreținerea și extinderea.