Modèle de conception de pont en Java

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