본문 바로가기

설계/디자인 패턴

파사드 패턴

개요

파사드 (FACADE) 패턴은 여러 인터페이스를 가지는 객체들에서 간단하고 구체적인 형태의 인터페이스를 제공하고자 할때 사용 됩니다.

예를 들어 A 클래스와 B 클래스에 있는 인터페이스를 조합해 Facade 클래스에서 새로운 인터페이스 제공 하는 형태로 구성 할때 사용 됩니다.

Facade 클래스에서는 흐름을 제어하기 위한 비지니스 로직이 일정 부분 포함 될 수 있습니다.


 

설명

파사드 패턴은 일정 부분 프록시 (PROXY) 패턴과 유사해 보일 수도 있는데요. 프록시 패턴은 대상 클래스와 동일한 인터페이스를 제공하고 요청 받으면 바로 대상 클래스에게 전달 하는 형태로 구성 됩니다.

하지만 파사드 패턴은 대상 클래스의 인터페이스를 조합하여 일련의 흐름을 제공하는 비지니스 로직을 포함 하는 새로운 인터페이스를 제공 한다는 점에서 차이점이 있습니다.

클래스 다이어그램을 확인해 보겠습니다. 먼저 Waiter 는 Customer 로 부터 주문(order)을 받습니다. 그러면 Waiter 내부적으로 Chef 와 Bartender 에게 Dish 를 전달 받아 Customer 에게 제공 합니다.

Waiter 는 Chef 가 제공하는 cooking 인터페이스와 Bartender 가 제공하는 bartending 인터페이스를 사용하지 않고 별도로 만든 order 인터페이스를 이용해 이 둘을 호출하는 것을 볼 수 있습니다.

파사드 패턴은 이처럼 구현에 대한 세부적인 클래스의 복잡한 인터페이스를 노출하지 않고 단순한 인터페이스를 제공해 줌으로서 파사드와 호출하는 쪽의 관계를 유연하게 구성할 수 있게 해줍니다.


 

정리

  • 파사드 패턴은 A 클래스와 B 클래스에 있는 인터페이스를 조합해 Facade 클래스에서 새로운 인터페이스 제공 하는 형태로 구성 할때 사용 됩니다.
  • 파사드 패턴은 세부적인 구현의 인터페이스를 노출하지 않고 간단하고 구체적인 인터페이스를 제공해 줌으로서 호출하는 쪽의 관계를 유연하게 구성할 수 있게 해줍니다.

'설계 > 디자인 패턴' 카테고리의 다른 글

모노스테이트 패턴  (0) 2020.08.22
싱글톤 패턴  (0) 2020.08.20
파사드 패턴  (0) 2020.08.20
스트래티지 패턴  (0) 2020.08.18
템플릿 메소드 패턴  (0) 2020.08.18
커맨드 패턴  (0) 2020.08.17