Design Pattern

파사드 패턴(Facade Pattern)

테리는당근을좋아해 2022. 9. 6. 01:57

파사드 패턴(Facade Pattern)

  • 파사드 패턴은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체
  • 파사드 패턴은 서브 시스템을 감춰 주는 상위 수준의 인터페이스를 제공함으로써 ‘코드 중복'과 ‘직접적인 의존' 문제를 해결하는데 도움을 줌

파사드 패턴 구조

 

1) 파사드 패턴 적용하기

파사드 패턴을 적용할 수 있는 경우

  • 위와 같은 설계 구조의 코드가 있다고 생각하자
  • 위 설계 구조에서는 세 개의 클래스에서 동일한 Dao에 접근하면서 ‘코드 중복’과 ‘직접적인 의존'이라는 문제점을 가지고 있다.

 

파사드 패턴 적용하기

  • 파사드를 이용해서 ‘코드 중복'과 ‘직접적인 의존’을 해결
  • 위 설계에서 ‘EmpReportDaoFacade(파사드)는 서브 시스템에 속한 각 Dao를 이용해 클라이언트가 원하는 데이터를 제공하기 위한 인터페이스를 제공
  • 각 클라이언트는 파사드를 이용해 서브시스템에 간접적으로 접근
  • 파사드 패턴을 적용하면 코드가 간결해지고 서브 시스템의 일부가 변경되더라도 그 여파는 파사드로 한정될 가능성이 높아짐

 

2) 파사드 패턴의 장점

  • 중복된 코드가 제거되고 코드가 간결
  • 직접적인 의존 제거
  • 서브 시스템의 일부가 변경되더라도 그 여파는 파사드로 한정될 가능성이 높아짐
  • 파사드를 인터페이스로 정의함으로써 클라이언트의 변경 없이 서브 시스템 자체를 변경

 

3) 파사드 패턴의 특징

  • 파사드 패턴을 적용한다고 해서 서브 시스템에 대한 직접적인 접근을 완전히 막는 것은 아님
  • 파사드 패턴은 단지 여러 클라이언트에 ‘중복된 서브 시스템 사용을 파사드로 추상화’
  • 따라서, 공통된 기능은 파사드를 통해 접근할 수 있도록 하고, 그렇지 않은 경우 서브 시스템에 직접 접근하는 방식을 선택할 수도 있음