언린이 2021. 10. 5. 09:36

Facade 패턴은 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. Facade 클래스에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다.

 

 

구조

  • Facade
    • Facade 클래스는 Subsystem 클래스들을 혼합하여 Client가 요청할 수 있는 간단한 메서드를 제공합니다.
  • Client
    • Subsystem 클래스 내의 리소스에 접근하기 위해 Facade 클래스를 사용하는 객체입니다.
  • Subsystem
    • 소프트웨어 라이브러리/API의 집합입니다. Facade 클래스를 통해 접근됩니다.

 

 

활용 상황

  • 복잡한 Subsystem에 대해 간단한 인터페이스를 제공하고자 할때 유용합니다.
  • Client와 구현 클래스 사이에 또는 Subsystem과 다른 Subsystem들 사이에 의존관계가 많을 경우에 이를 감소시킬때 유용합니다.

 

 

Facade 패턴의 장단점

  • 장점
    • Subsystem 간의 결합도를 낮출 수 있습니다.
    • Client 입장에서 Subsystem을 사용해야 할때 다루어야 할 객체의 수를 줄여줍니다.
    • 클라이언트 입장에서 좀 더 간결하게 코드를 알아볼 수 있게 해줍니다.
  • 단점
    • Client에게 내부 Subsystem까지 숨길 수 없습니다.
      • Client가 Subsystem 내부의 클래스를 직접 사용하는 것을 막을 수 없습니다.