Junior — Middle
Perché nel pattern ponte si separano astrazione e implementazione concreta?
sobes.tech AI
Risposta dell'AI
Nel pattern "Bridge" (Ponte), la separazione tra astrazione e implementazione concreta consente di modificarle indipendentemente. Ciò si ottiene perché l’astrazione contiene un riferimento all’interfaccia di implementazione, e non a una classe concreta.
Motivi della separazione:
- Flessibilità: È possibile cambiare l’implementazione senza modificare l’astrazione e viceversa.
- Estensibilità: È facile aggiungere nuove implementazioni e nuove astrazioni senza molte sottoclassi.
- Isolamento delle modifiche: Le modifiche all’implementazione non influenzano il codice client che utilizza l’astrazione.
Ad esempio, se hai un’astrazione "Figura" e implementazioni "Disegno su schermo" e "Disegno su file", puoi cambiare il metodo di disegno senza modificare la logica della figura.
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.cerchio a " + x + "," + y + " raggio " + 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);
}
}
In questo modo, l’astrazione Circle non dipende da un’implementazione concreta di DrawingAPI, facilitando manutenzione ed estensione.