Entwurfsmuster - Fassadenmuster

Das Fassadenmuster verbirgt die Komplexität des Systems und bietet eine Schnittstelle zum Client, über die der Client auf das System zugreifen kann. Diese Art von Entwurfsmuster fällt unter ein Strukturmuster, da dieses Muster eine Schnittstelle zum vorhandenen System hinzufügt, um dessen Komplexität zu verbergen.

Dieses Muster umfasst eine einzelne Klasse, die vereinfachte Methoden bereitstellt, die vom Client benötigt werden, und Aufrufe an Methoden vorhandener Systemklassen delegiert.

Implementierung

Wir werden eine Shape- Schnittstelle und konkrete Klassen erstellen, die die Shape- Schnittstelle implementieren . Als nächsten Schritt wird eine Fassadenklasse ShapeMaker definiert.

Die ShapeMaker- Klasse verwendet die konkreten Klassen, um Benutzeraufrufe an diese Klassen zu delegieren. FacadePatternDemo , unsere Demo-Klasse, verwendet die ShapeMaker- Klasse, um die Ergebnisse anzuzeigen .

Schritt 1

Erstellen Sie eine Schnittstelle.

Shape.java

public interface Shape {
   void draw();
}

Schritt 2

Erstellen Sie konkrete Klassen, die dieselbe Schnittstelle implementieren.

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

Schritt 3

Erstellen Sie eine Fassadenklasse.

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

Schritt 4

Verwenden Sie die Fassade, um verschiedene Arten von Formen zu zeichnen.

FacadePatternDemo.java

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

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

Schritt 5

Überprüfen Sie die Ausgabe.

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