Mẫu thiết kế - Mẫu mặt tiền

Mẫu mặt tiền che giấu sự phức tạp của hệ thống và cung cấp một giao diện cho khách hàng bằng cách sử dụng mà khách hàng có thể truy cập vào hệ thống. Loại mẫu thiết kế này nằm dưới mẫu cấu trúc vì mẫu này thêm một giao diện vào hệ thống hiện có để che giấu sự phức tạp của nó.

Mẫu này liên quan đến một lớp duy nhất cung cấp các phương thức đơn giản hóa theo yêu cầu của máy khách và ủy quyền các cuộc gọi đến các phương thức của các lớp hệ thống hiện có.

Thực hiện

Chúng ta sẽ tạo một giao diện Shape và các lớp cụ thể triển khai giao diện Shape . Một lớp mặt tiền ShapeMaker được định nghĩa là bước tiếp theo.

Lớp ShapeMaker sử dụng các lớp cụ thể để ủy quyền các cuộc gọi của người dùng đến các lớp này. FacadePatternDemo , lớp demo của chúng tôi, sẽ sử dụng lớp ShapeMaker để hiển thị kết quả.

Bước 1

Tạo giao diện.

Shape.java

public interface Shape {
   void draw();
}

Bước 2

Tạo các lớp cụ thể triển khai cùng một giao diện.

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

Bước 3

Tạo lớp mặt tiền.

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

Bước 4

Sử dụng mặt tiền để vẽ các loại hình dạng khác nhau.

FacadePatternDemo.java

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

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

Bước 5

Xác minh kết quả đầu ra.

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