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