รูปแบบการออกแบบ - รูปแบบอาคาร
รูปแบบด้านหน้าจะซ่อนความซับซ้อนของระบบและจัดเตรียมอินเตอร์เฟสให้กับไคลเอ็นต์ซึ่งไคลเอ็นต์สามารถเข้าถึงระบบได้ รูปแบบการออกแบบประเภทนี้อยู่ภายใต้รูปแบบโครงสร้างเนื่องจากรูปแบบนี้เพิ่มส่วนต่อประสานให้กับระบบที่มีอยู่เพื่อซ่อนความซับซ้อน
รูปแบบนี้เกี่ยวข้องกับคลาสเดียวซึ่งจัดเตรียมเมธอดแบบง่ายที่ไคลเอนต์ต้องการและผู้ได้รับมอบหมายจะเรียกใช้เมธอดของคลาสระบบที่มีอยู่
การนำไปใช้
เรากำลังจะสร้างอินเทอร์เฟซ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
ตรวจสอบผลลัพธ์
Circle::draw()
Rectangle::draw()
Square::draw()