상세 컨텐츠

본문 제목

퍼사드(Facade) 패턴

Spring/디자인패턴

by Chan.94 2024. 11. 12. 11:09

본문

반응형

Facade란

프랑스어 Façade에서 유래된 단어로 건물의 외관이라는 뜻을 가지고 있다.

건물의 외벽에서 보면 안의 구조는 보이지 않는다다. 여기서는 복잡한 시스템의 '앞면'이라는 의미로 사용된다.

Facade Pattern

복잡한 시스템이나 서브시스템의 인터페이스에 대한 간략한 인터페이스를 제공하여, 시스템의 복잡성을 감소시키는 패턴이다.

예를 들어, 라이브러리의 각 클래스와 메서드들이 어떤 목적의 동작인지 이해하기 어려워 바로 사용하기에는 난이도가 높을 때 사용자로 하여금 쉽게 라이브러리를 다룰 수 있도록 인터페이스를 제공한다.

 

Facade Pattern 구조

  • Facade
    서브시스템 기능을 편리하게 사용할 수 있도록 하기 위해 여러 시스템과 상호 작용하는 복잡한 로직을 재정리해서 높은 레벨의 인터페이스를 구성한다.
    Facade는 ‘단순한 창구’ 역할을 한다.

  • Additional Facade
    Facade가 반드시 한개만 존재해야 한다는 규칙은 없다. 얼마든지 추가적인 퍼사드를 제공할 수 있다. 이러한 추가적인 퍼사드는 클라이언트에서 직접 접근하여 사용할 수도 있고, 다른 퍼사드에서도 사용할 수 있다.

  • SubSystem
    수십 가지 라이브러리 혹은 클래스

  • Client 
    서브 시스템에 직접 접근하는 대신 Facade를 사용한다.

Facade Pattern 사용 시기

  • 단 하나 인터페이스를 통해 복잡한 시스템을 접근하도록 하고 싶을 때
  • 시스템을 사용하고 있는 외부와 결합도가 너무 높을 때 의존성 낮추기 위할 때

Facade Pattern 장점

  • 클라이언트는 복잡한 서브시스템들을 조합하기보다는 간단한 인터페이스 사용으로 부담이 적어진다.
  • 복잡한 코드를 감추어 Facade만으로 시스템을 이해하고 사용할 수 있다.

Facade Pattern 단점

  • 퍼사드 클래스 자체가 서브시스템에 대한 의존성을 가지게 되어 의존성을 완전히는 피할 수는 없다.

마무리

정리를 하기는 했지만 사실 무의식 중에 퍼사드 패턴을 사용중일 것이다.

이제는 무의식중에 사용하던 퍼사드 패턴을 추상화하고자 하는 시스템이 얼마나 복잡한지 퍼사드 패턴을 통해서 얻게 되는 이점과 추가적인 유지보수 비용을 비교해 보며 결정하도록 하자.

 

 

 

 

반응형

관련글 더보기

댓글 영역

>