퍼사드 패턴이란

퍼사드(Façade)는 프랑스어로 ‘건물의 정면’을 의미함. 소프트웨어 공학에서 퍼사드 패턴은 이 개념을 차용해 복잡한 서브시스템의 내부 구현을 숨기고, 클라이언트가 사용하기 쉬운 단일 인터페이스를 제공하는 역할을 함. GoF(Gang of Four)의 디자인 패턴 중 구조 패턴(Structural Pattern)으로 분류됨.

클라이언트는 복잡하게 얽힌 서브시스템에 직접 접근할 필요 없이, 퍼사드 객체가 제공하는 간결한 API를 통해 필요한 기능을 호출할 수 있음. 이를 통해 서브시스템과 클라이언트 간의 결합도(coupling)를 효과적으로 낮출 수 있음.

사용 목적과 장점

퍼사드 패턴의 주요 목적과 장점은 다음과 같음.

  • 복잡도 은닉: 클라이언트는 서브시스템의 내부 동작 원리를 알 필요 없이, 퍼사드가 제공하는 단순화된 인터페이스에만 의존하게 됨
  • 결합도 감소: 서브시스템의 내부 구현이 변경되더라도 퍼사드 인터페이스가 유지된다면 클라이언트 코드를 수정할 필요가 없음. 이는 시스템 전체의 유지보수성과 유연성을 향상시킴
  • 사용성 향상: 여러 단계의 호출이나 복잡한 설정이 필요한 작업을 단일 메서드 호출로 단순화하여 코드 가독성을 높이고 라이브러리 사용을 용이하게 만듦
  • 레거시 래핑(Wrapping): 설계가 좋지 않거나 사용하기 어려운 레거시 API를 더 깔끔하고 현대적인 API로 감싸는 데 효과적임

어댑터 패턴과의 차이점

퍼사드 패턴은 종종 어댑터(Adapter) 패턴과 비교되지만, 두 패턴의 목적은 명확히 다름.

  • 퍼사드 패턴: 기존 인터페이스를 단순화하는 데 초점을 맞춤. 복잡한 시스템을 더 쉽게 사용하도록 새로운 인터페이스를 제공함
  • 어댑터 패턴: 호환되지 않는 인터페이스들을 연결하는 것이 목적. 기존 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환함

요약하자면, 인터페이스를 더 쉽게 사용하는 것이 목표라면 퍼사드를, 특정 인터페이스 규격을 맞춰야 한다면 어댑터를 선택하는 것이 일반적임.

참고자료