รูปแบบการออกแบบ - รูปแบบอาคาร

รูปแบบด้านหน้าจะซ่อนความซับซ้อนของระบบและจัดเตรียมอินเตอร์เฟสให้กับไคลเอ็นต์ซึ่งไคลเอ็นต์สามารถเข้าถึงระบบได้ รูปแบบการออกแบบประเภทนี้อยู่ภายใต้รูปแบบโครงสร้างเนื่องจากรูปแบบนี้เพิ่มส่วนต่อประสานให้กับระบบที่มีอยู่เพื่อซ่อนความซับซ้อน

รูปแบบนี้เกี่ยวข้องกับคลาสเดียวซึ่งจัดเตรียมเมธอดแบบง่ายที่ไคลเอนต์ต้องการและผู้ได้รับมอบหมายจะเรียกใช้เมธอดของคลาสระบบที่มีอยู่

การนำไปใช้

เรากำลังจะสร้างอินเทอร์เฟซ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()