Aujourd’hui, nous examinerons le modèle de conception Bridge en Java. Lorsque nous avons des hiérarchies d’interfaces à la fois dans les interfaces et dans les implémentations, le modèle de conception de pont est utilisé pour découpler les interfaces de l’implémentation et masquer les détails de l’implémentation des programmes clients.
Modèle de conception de pont
Tout comme le modèle d’adaptateur, le modèle de conception de pont est l’un des modèles de conception structurelle. Selon GoF, le modèle de conception de pont consiste à :
Découpler une abstraction de son implémentation afin que les deux puissent varier indépendamment
L’implémentation du modèle de conception de pont suit l’idée de préférer la composition à l’héritage.
Exemple de modèle de conception de pont en Java
Si nous examinons le modèle de conception de pont avec un exemple, il sera facile à comprendre. Disons que nous avons une hiérarchie d’interfaces dans les interfaces et les implémentations comme sur l’image ci-dessous. Maintenant, nous allons utiliser le modèle de conception de pont pour découpler les interfaces de l’implémentation. Le diagramme UML des classes et des interfaces après l’application du modèle de pont ressemblera à l’image ci-dessous.
Remarquez le pont entre les interfaces
Shape
et Color
et l’utilisation de la composition dans la mise en œuvre du modèle de pont. Voici le code Java pour les interfaces Shape et Color. Color.java
package com.journaldev.design.bridge;
public interface Color {
public void applyColor();
}
Shape.java
package com.journaldev.design.bridge;
public abstract class Shape {
//Composition - implementor
protected Color color;
//constructeur avec l'implémentateur comme argument d'entrée
public Shape(Color c){
this.color=c;
}
abstract public void applyColor();
}
Nous avons les classes d’implémentation Triangle et Pentagon comme ci-dessous. Triangle.java
package com.journaldev.design.bridge;
public class Triangle extends Shape{
public Triangle(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Triangle filled with color ");
color.applyColor();
}
}
Pentagon.java
package com.journaldev.design.bridge;
public class Pentagon extends Shape{
public Pentagon(Color c) {
super(c);
}
@Override
public void applyColor() {
System.out.print("Pentagon filled with color ");
color.applyColor();
}
}
Voici les classes d’implémentation pour RedColor et GreenColor. RedColor.java
package com.journaldev.design.bridge;
public class RedColor implements Color{
public void applyColor(){
System.out.println("red.");
}
}
GreenColor.java
package com.journaldev.design.bridge;
public class GreenColor implements Color{
public void applyColor(){
System.out.println("green.");
}
}
Testons notre implémentation du modèle de pont avec un programme de test. BridgePatternTest.java
package com.journaldev.design.test;
import com.journaldev.design.bridge.GreenColor;
import com.journaldev.design.bridge.Pentagon;
import com.journaldev.design.bridge.RedColor;
import com.journaldev.design.bridge.Shape;
import com.journaldev.design.bridge.Triangle;
public class BridgePatternTest {
public static void main(String[] args) {
Shape tri = new Triangle(new RedColor());
tri.applyColor();
Shape pent = new Pentagon(new GreenColor());
pent.applyColor();
}
}
La sortie du programme d’exemple de modèle de pont ci-dessus est:
Triangle filled with color red.
Pentagon filled with color green.
Le modèle de conception du pont peut être utilisé lorsque l’abstraction et l’implémentation peuvent avoir des hiérarchies différentes de manière indépendante et que nous voulons cacher l’implémentation de l’application cliente.
Source:
https://www.digitalocean.com/community/tutorials/bridge-design-pattern-java