Sobes.tech
Junior — Middle
90

¿Por qué en el patrón puente se separan la abstracción y la implementación concreta?

Empresas donde se preguntó
СБЕРСБЕР

Respuesta de la IA

sobes.tech AI

En el patrón "Puente" (Bridge), la separación de la abstracción y la implementación concreta permite modificarlas de manera independiente. Esto se logra porque la abstracción contiene una referencia a la interfaz de implementación, y no a una clase concreta.

Razones para la separación:

  • Flexibilidad: Se puede cambiar la implementación sin modificar la abstracción y viceversa.
  • Extensibilidad: Es fácil agregar nuevas implementaciones y nuevas abstracciones sin múltiples subclases.
  • Aislamiento de cambios: Los cambios en la implementación no afectan al código cliente que usa la abstracción.

Por ejemplo, si tienes una abstracción "Figura" y las implementaciones "Dibujo en pantalla" y "Dibujo en archivo", puedes cambiar la forma de dibujar sin cambiar la lógica de la 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 en " + x + "," + y + " radio " + 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);
    }
}

Así, la abstracción Circle no depende de una implementación concreta de DrawingAPI, lo que facilita el mantenimiento y la extensión.