รูปแบบ facade เป็นรูปแบบในกลุ่ม structural design pattern รูปแบบ facade เป็นรูปแบบที่ช่วยซ่อนความซับซ้อนของระบบงานหรือกลุ่มของระบบย่อยด้วยส่วนเชื่อมต่อที่ใช้งานง่ายกว่าการติดต่อกับส่วนย่อยๆนั้นโดยตรง โดยการสร้างคลาสที่เป็น facade ขึ้นมา คลาสที่จะใช้งานจะติดต่อมาที่คลาส facade ซึ่งจะส่งต่อคำขอไปยังคลาสย่อยให้อีกทีหนึ่ง รูปแบบ facade มักจะถูกใช้ร่วมกับรูปแบบอื่น เช่น รูปแบบ adapter, รูปแบบ decorator เป็นต้น 

     ตัวอย่างด้านล่างเป็นการใช้รูปแบบ facade ในภาษาจาวา โดยเราใช้คลาส Subsystem เป็นตัวแทนระบบที่ซับซ้อนหรือมีระบบย่อยมากมาย 

// Complex subsystem

class Subsystem {

    public void operation1() {

        System.out.println(“Performing operation 1”);

    }

    public void operation2() {

        System.out.println(“Performing operation 2”);

    }

    public void operation3() {

        System.out.println(“Performing operation 3”);

    }

}

     จากนั้นเราสร้างคลาส facade ขึ้นมาโดยเมธอดในคลาสจะช่วยให้การเรียกใช้งานเมธอดง่ายขึ้น 

// Facade class

class Facade {

    private Subsystem subsystem;

    public Facade() {

        subsystem = new Subsystem();

    }

    public void doSomething() {

        subsystem.operation1();

        subsystem.operation2();

    }

    public void doSomethingElse() {

        subsystem.operation2();

        subsystem.operation3();

    }

}

     จะเห็นว่าในการเรียกใช้งานจะเรียกใช้งานจากเมธอดของคลาส facade

public static void main(String[] args) {

    Facade facade = new Facade();

    facade.doSomething();

    facade.doSomethingElse();

}