Sobes.tech
Junior — Middle

Pourquoi le motif pont sépare-t-il l'abstraction et la mise en œuvre concrète?

sobes.tech IA

Réponse de l'IA

Dans le motif "Pont" (Bridge), la séparation de l’abstraction et de la mise en œuvre concrète permet de les modifier indépendamment. Cela est réalisé parce que l’abstraction contient une référence à l’interface de mise en œuvre, et non à une classe concrète.

Raisons de la séparation :

  • Flexibilité : La mise en œuvre peut être modifiée sans changer l’abstraction et vice versa.
  • Extensibilité : Il est facile d’ajouter de nouvelles implémentations et de nouvelles abstractions sans de nombreuses sous-classes.
  • Isolation des changements : Les changements dans la mise en œuvre n’affectent pas le code client utilisant l’abstraction.

Par exemple, si vous avez une abstraction "Figure" et des implémentations "Dessin à l’écran" et "Dessin dans un fichier", vous pouvez changer la méthode de dessin sans modifier la logique de la figure.

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.cercle à " + x + "," + y + " rayon " + 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);
    }
}

Ainsi, l’abstraction Circle ne dépend pas d’une implémentation concrète de DrawingAPI, ce qui facilite la maintenance et l’extension.