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