Sobes.tech
Junior — Middle

Waarom scheiden het brugpatroon abstractie en concrete implementatie?

sobes.tech AI

Antwoord van AI

In het patroon "Bridge" (Brug) zorgt de scheiding van abstractie en concrete implementatie ervoor dat ze onafhankelijk van elkaar kunnen worden gewijzigd. Dit wordt bereikt doordat de abstractie een verwijzing bevat naar de implementatie-interface, niet naar een concrete klasse.

Redenen voor scheiding:

  • Flexibiliteit: De implementatie kan worden gewijzigd zonder de abstractie te veranderen en vice versa.
  • Uitbreidbaarheid: Het is gemakkelijk om nieuwe implementaties en nieuwe abstracties toe te voegen zonder veel subklassen.
  • Isolatie van wijzigingen: Wijzigingen in de implementatie beïnvloeden de client-code die de abstractie gebruikt niet.

Bijvoorbeeld, als je een abstractie "Vorm" hebt en implementaties "Tekenen op scherm" en "Tekenen naar bestand", dan kun je de tekenmethode wijzigen zonder de logica van de vorm te veranderen.

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.cirkel op " + x + "," + y + " radius " + 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);
    }
}

Op deze manier is de abstractie "Circle" niet afhankelijk van een concrete implementatie van "DrawingAPI", wat onderhoud en uitbreiding vergemakkelijkt.