Sobes.tech
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.