퍼사드는 클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체이다.
그렇기에 퍼사드는 소프트웨어 라이브러리를 쉽게 사용, 이해할 수 있게 해주며 공통 작업에 대한 간편한 메소드들을 제공해준다.
퍼사드는 라이브러리 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜준다.
대부분 바깥쪽의 코드가 퍼사드를 이용하기 때문에 이는 시스템을 개발하는 데 있어 유연성을 향상 시켜준다.
그리고 퍼사드는 좋게 작성되지 않은 API의 집합을 하나의 좋게 작성된 API로 감싸준다.
출처: 퍼사드 패턴 위키
나의 언어로
"건물의 정면"이라는 의미의 단어의 뜻처럼 클래스 인터페이스만으로 코드를 작성할 수 있다는 장점을 가진다.
이는 만약 하위 시스템이 복잡하더라도 클라이언트 코드는 이를 신경 쓰지 않아도 된다는 장점을 가지며
기존에 잘 작성하지 못한 코드를 리팩토링하는데 하나의 좋은 방법이 될 수 있다고 생각한다.
이러한 퍼사드 메서드 패턴은 다음과 같은 경우에 적용할 수 있다고 한다.
하위 시스템은 시간이 지날수록 더 복잡해지곤 한다.
하위 시스템이 더 유연해지고 더 많은 다양한 상황에서 재사용할 수 있도록 변경될 수도 있지만, 해당 시스템이 클라이언트에게 요구하는 설정 및 상용구 코드의 양은 점점 더 많아질 것이다.
이 문제를 해결하기 위해 퍼사드는 대부분 클라이언트 요건에 부합하면서 하위 시스템에서 가장 많이 사용되는 기능들로 향하는 지름길을 제공한다.
추가적인 예제로 컨트롤러에 제공할 퍼사드를 적용한 간단한 인터페이스를 가진 퍼사드 서비스가 있을 수 있다.
하위 시스템의 각 계층에 대한 진입점을 정의하기 위해 퍼사드 패턴을 생성한다.
하위 시스템이 퍼사드 패턴들을 통해서만 통신하도록 함으로써 해당 하위 시스템 간의 결합도를 줄일 수 있다.