Junior — Middle
Por que no padrão ponte separam a abstração e a implementação concreta?
sobes.tech IA
Resposta da IA
No padrão "Bridge" (Ponte), a separação da abstração e da implementação concreta permite modificá-las de forma independente. Isso é alcançado porque a abstração contém uma referência à interface de implementação, e não a uma classe concreta.
Razões para a separação:
- Flexibilidade: Pode-se alterar a implementação sem modificar a abstração e vice-versa.
- Extensibilidade: É fácil adicionar novas implementações e novas abstrações sem múltiplas subclasses.
- Isolamento de mudanças: Mudanças na implementação não afetam o código cliente que usa a abstração.
Por exemplo, se você tem uma abstração "Figura" e implementações "Desenho na tela" e "Desenho em arquivo", pode mudar a forma de desenhar sem alterar a lógica da 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.círculo em " + x + "," + y + " raio " + 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);
}
}
Assim, a abstração Circle não depende de uma implementação concreta de DrawingAPI, o que facilita a manutenção e a extensão.