퍼사드 패턴(Facade Pattern)은 구조 패턴 중 하나로 이는 소프트웨어에서 특정한 문제를 해결하기 위해 반복적으로 발생하는 구조를 식별하고, 그 구조에 따라 일반화된 해결책을 제시하는 것을 의미합니다.
한마디로 일괄적으로 관리할 수 있도록 만드는 패턴입니다.
퍼사드 패턴이란?
퍼사드(Facade) 패턴은 복잡하게 얽혀 있는 것을 정리해서 사용하기 편한 인터페이스를 고객에게 제공한다고 보면된다. 그래서 고객은 복잡한 시스템을 알 필요없이 시스템의 외부에 대해서 단순한 인터페이스를 이용하기만 하면 된다. 퍼사드를 이용하면 자칫 동작의 목적과 같은 중요한 사항을 놓치는 실수를 줄일 수 있다.
한마디로 여러 클래스의 메소드를 모아 하나의 인터페이스로 만들어 사용자가 쉽게 사용할 수 있도록하는 패턴이다.
퍼사드 패턴 구조

서브시스템 기능을 편리하게 사용할 수 있도록 하기 위해 여러 시스템과 상호 작용하는 복잡한 로직을 재정리해서 높은 레벨의 인터페이스를 구성한다. Facade 역할은 서브 시스템의 많은 역할에 대해 ‘단순한 창구’가 된다. 클라이언트와 서브시스템이 서로 긴밀하게 연결되지 않도록 한다.
수십 가지 라이브러리 혹은 클래스들
서브 시스템에 직접 접근하는 대신 Facade를 사용한다
퍼사드 패턴은 전략 패턴이나 팩토리 패턴과 같은 여타 다른 디자인 패턴과는 다르게 클래스 구조가 정형화 되지 않은 패턴이다. 반드시 클래스 위치는 어떻고 어떤 형식으로 위임을 해야되고 이런것이 없다.
퍼사드 패턴 코드
Facade Pattern(미적용)
SubSystem
class Rinsing{
void rinse(){
System.out.println("do Rinsing")
}
}
class Spinning{
void spin(){
System.out.println("do Spinning")
}
}
class Washing{
void wash(){
System.out.println("do Washing")
}
}
client
class Client{
Washing washing = new Washing();
Rinsing rinsing = new Rinsing();
Spinning spinning = new Spinning();
washing.wash();
rinsing.rinse();
spinning.spin();
}
Facade Pattern(적용)
Facade class
class WashingMachine{
Washing washing = new Washing();
Rinsing rinsing = new Rinsing();
Spinning spinning = new Spinning();
void startWashing(){
washing.wash();
rinsing.rinse();
spinning.spin();
}
}
client
class Client{
WashingMachine washingMachine = new WashingMachine();
washingMachine.strartWahsing();
}
Client에서는 Facade Object(WashingMachine)만을 호출하여 '세탁'이라는 동작을 수행할 수 있으며, 메서드의 의미 또한 명확하게 알 수 있다.
퍼사드 패턴
[Design Pattern] Facade Pattern (퍼사드 패턴)
💠 퍼사드(Facade) 패턴 - 완벽 마스터하기