문제 및 이론 정리/디자인패턴

[디자인패턴] Facade - 단순한 창구를 만든다

hail2y 2025. 3. 5. 13:54

facade 건물의 정면(앞면), 창구

 

복잡하게 얽혀서 너저분한 세부 내용을 정리하여 높은 수준의 인터페이스(API)를 제공한다

facade 역은 시스템 외부에 간단한 인터페이스(API)를 보여준다

시스템 내부의 각 클래스의 역할과 의존 관계를 고려하여 올바른 순서로 클래스를 사용한다

 

 

Facade - 시스템을 구성하는 그 밖의 많은 역을 위한 단순한 창구, 높은 수준의 단순한 인터페이스(API)를 시스템 외부에 제공

시스템을 구성하는 그 밖의 많은 배역 - 각자의 일을 하고 Facade에 대해 신경 쓰지 않음, Facade로부터 호출을 받고 일하지만 수많은 다른 배역에서 Facade를 호출하는 경우는 없음

Client - Facade 패턴을 이용, Main 클래스 

  • 복잡한 것을 단순하게 보여준다. Facade 역은 그 복잡함을 의식하지 않아도 되게끔 한다.
    (복잡한 것이란 내부에서 동작은 많은 클래스 사이의 관계나 사용 방법을 말한다.)
  • 핵심은 인터페이스(API) 수를 줄이는 것이다. 클래스와 메서드가 외부에서 많이 보이면 복잡도가 올라가고 호출 순서에도 유의해야 한다. 이 말은 외부와의 결합이 느슨하다고도 표현할 수 있다.
  • 많은 클래스와 패키지를 가진 매우 큰 시스템일 경우 요소요소에 Facade 패턴을 적용할 수 있다.