Padrões de projeto - padrão de fachada

O padrão de fachada oculta as complexidades do sistema e fornece uma interface para o cliente, por meio da qual o cliente pode acessar o sistema. Esse tipo de padrão de design vem sob o padrão estrutural, pois esse padrão adiciona uma interface ao sistema existente para ocultar suas complexidades.

Esse padrão envolve uma única classe que fornece métodos simplificados exigidos pelo cliente e delega chamadas para métodos de classes de sistema existentes.

Implementação

Vamos criar uma interface Shape e classes concretas implementando a interface Shape . Uma classe de fachada ShapeMaker é definida como uma próxima etapa.

A classe ShapeMaker usa as classes concretas para delegar chamadas de usuário a essas classes. FacadePatternDemo , nossa classe de demonstração, usará a classe ShapeMaker para mostrar os resultados.

Passo 1

Crie uma interface.

Shape.java

public interface Shape {
   void draw();
}

Passo 2

Crie classes concretas implementando a mesma interface.

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

etapa 3

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

Passo 4

Use a fachada para desenhar vários tipos de formas.

FacadePatternDemo.java

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

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

Etapa 5

Verifique a saída.

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