Patrones de diseño: patrón de fachada
El patrón de fachada oculta las complejidades del sistema y proporciona una interfaz al cliente mediante la cual el cliente puede acceder al sistema. Este tipo de patrón de diseño viene bajo patrón estructural ya que este patrón agrega una interfaz al sistema existente para ocultar sus complejidades.
Este patrón involucra una sola clase que proporciona métodos simplificados requeridos por el cliente y delega llamadas a métodos de clases de sistema existentes.
Implementación
Vamos a crear una interfaz Shape y clases concretas implementando la interfaz Shape . Una clase de fachada ShapeMaker se define como el siguiente paso.
La clase ShapeMaker usa las clases concretas para delegar las llamadas de los usuarios a estas clases. FacadePatternDemo , nuestra clase de demostración, usará la clase ShapeMaker para mostrar los resultados.
Paso 1
Crea una interfaz.
Shape.java
public interface Shape {
void draw();
}
Paso 2
Crea clases concretas implementando la misma interfaz.
Rectángulo.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()");
}
}
Paso 3
Crea una clase de fachada.
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();
}
}
Paso 4
Usa la fachada para dibujar varios tipos de formas.
FacadePatternDemo.java
public class FacadePatternDemo {
public static void main(String[] args) {
ShapeMaker shapeMaker = new ShapeMaker();
shapeMaker.drawCircle();
shapeMaker.drawRectangle();
shapeMaker.drawSquare();
}
}
Paso 5
Verifique la salida.
Circle::draw()
Rectangle::draw()
Square::draw()