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