Modelli di design - Modello di facciata

Il motivo della facciata nasconde le complessità del sistema e fornisce un'interfaccia al cliente tramite la quale il cliente può accedere al sistema. Questo tipo di modello di progettazione rientra nel modello strutturale poiché questo modello aggiunge un'interfaccia al sistema esistente per nascondere le sue complessità.

Questo modello coinvolge una singola classe che fornisce i metodi semplificati richiesti dal client e delega le chiamate ai metodi delle classi di sistema esistenti.

Implementazione

Creeremo un'interfaccia Shape e classi concrete che implementano l' interfaccia Shape . Una classe di facciata ShapeMaker viene definita come passaggio successivo.

La classe ShapeMaker utilizza le classi concrete per delegare le chiamate degli utenti a queste classi. FacadePatternDemo , la nostra classe demo, utilizzerà la classe ShapeMaker per mostrare i risultati.

Passo 1

Crea un'interfaccia.

Shape.java

public interface Shape {
   void draw();
}

Passo 2

Crea classi concrete che implementano la stessa interfaccia.

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()");
   }
}

Passaggio 3

Crea una lezione di facciata.

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();
   }
}

Passaggio 4

Usa la facciata per disegnare vari tipi di forme.

FacadePatternDemo.java

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

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

Passaggio 5

Verifica l'output.

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