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