Шаблон фасада скрывает сложности системы и предоставляет клиенту интерфейс, с помощью которого клиент может получить доступ к системе. Этот тип шаблона проектирования подпадает под структурный шаблон, поскольку этот шаблон добавляет интерфейс к существующей системе, чтобы скрыть ее сложности.
Этот шаблон включает в себя один класс, который предоставляет упрощенные методы, требуемые клиентом, и делегирует вызовы методов существующих системных классов.
Реализация
Мы собираемся создать интерфейс Shape и конкретные классы, реализующие интерфейс Shape . Класс фасада ShapeMaker определен как следующий шаг.
Класс ShapeMaker использует конкретные классы для делегирования пользовательских вызовов этим классам. FacadePatternDemo , наш демонстрационный класс, будет использовать класс ShapeMaker для отображения результатов.
Шаг 1
Создать интерфейс.
Shape.java
public interface Shape { void draw(); }
Шаг 2
Создайте конкретные классы, реализующие тот же интерфейс.
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()"); } }
Шаг 3
Создать фасадный класс.
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(); } }
Шаг 4
Используйте фасад для рисования различных типов фигур.
FacadePatternDemo.java
public class FacadePatternDemo { public static void main(String[] args) { ShapeMaker shapeMaker = new ShapeMaker(); shapeMaker.drawCircle(); shapeMaker.drawRectangle(); shapeMaker.drawSquare(); } }
Шаг 5
Проверьте вывод.