Modèles de conception - Modèle de façade

Le modèle de façade cache les complexités du système et fournit une interface au client à l'aide de laquelle le client peut accéder au système. Ce type de modèle de conception relève d'un modèle structurel car ce modèle ajoute une interface au système existant pour masquer ses complexités.

Ce modèle implique une classe unique qui fournit les méthodes simplifiées requises par le client et délègue les appels aux méthodes des classes système existantes.

la mise en oeuvre

Nous allons créer une interface Shape et des classes concrètes implémentant l' interface Shape . Une classe de façade ShapeMaker est définie comme étape suivante.

La classe ShapeMaker utilise les classes concrètes pour déléguer les appels d'utilisateurs à ces classes. FacadePatternDemo , notre classe de démonstration, utilisera la classe ShapeMaker pour afficher les résultats.

Étape 1

Créez une interface.

Shape.java

public interface Shape {
   void draw();
}

Étape 2

Créez des classes concrètes mettant en œuvre la même interface.

Rectangle.java

public class Rectangle implements Shape {

   @Override
   public void draw() {
      System.out.println("Rectangle::draw()");
   }
}

Square.java

public class Square implements Shape {

   @Override
   public void draw() {
      System.out.println("Square::draw()");
   }
}

Circle.java

public class Circle implements Shape {

   @Override
   public void draw() {
      System.out.println("Circle::draw()");
   }
}

Étape 3

Créez une classe de façade.

ShapeMaker.java

public class ShapeMaker {
   private Shape circle;
   private Shape rectangle;
   private Shape square;

   public ShapeMaker() {
      circle = new Circle();
      rectangle = new Rectangle();
      square = new Square();
   }

   public void drawCircle(){
      circle.draw();
   }
   public void drawRectangle(){
      rectangle.draw();
   }
   public void drawSquare(){
      square.draw();
   }
}

Étape 4

Utilisez la façade pour dessiner différents types de formes.

FaçadePatternDemo.java

public class FacadePatternDemo {
   public static void main(String[] args) {
      ShapeMaker shapeMaker = new ShapeMaker();

      shapeMaker.drawCircle();
      shapeMaker.drawRectangle();
      shapeMaker.drawSquare();		
   }
}

Étape 5

Vérifiez la sortie.

Circle::draw()
Rectangle::draw()
Square::draw()