brunch

You can make anything
by writing

C.S.Lewis

by 윤민섭 Nov 27. 2020

Facade Pattern

너에게 다 맡긴다 패턴

Facade Pattern은 복잡한 시스템을 간단한 인터페이스로 제공하는 디자인 패턴입니다.

클래스 다이어그램 먼저 보겠습니다.



Facade는 시스템과 간단한 메서드로 인터렉션 합니다. 시스템을 이용하는 쪽에선 시스템의 복잡한 클래스들과 인터렉션 하는 대신 Facade를 이용합니다.

Dependencies는 Facade가 소유하는 객체입니다. 각 Dependency는 복잡한 task의 일부분을 수행합니다.


Facade Pattern을 사용하면 다양한 components로 시스템을 만들고 이를 사용자에겐 간단하게 제공할 수 있습니다.


음식점에 가면 자주 발견되는 키오스크(무인 계산기)를 Facade Pattern을 적용하여 코드로 구현해보겠습니다.

키오스크는 사용자의 주문을 받아  1. 결제를 하고 2. 주방엔 주문 리스트를 보내주고 3. 영수증을 출력합니다.

클래스 다이어그램의 Dependency A, B, C를 1, 2, 3의 역할을 하는 클래스로 생각해보겠습니다.



그리고 Facade 역할을 담당하는 Kiosk class를 보겠습니다.


이렇게 구현해두면 외부에서 Kiosk 클래스를 사용할 때, 영수증 출력이나 주문 리스트를 주방에 전달하는 것을 신경 쓰지 않고 pay 메서드 호출로 한 번에 해결이 가능합니다.


이제 Facade Pattern이 어떤 것인지 아시겠나요? 아마 자신도 모르게 이미 Facade Pattern을 사용하고 있었을 수도 있습니다.


읽어주셔서 고맙습니다.





Raywenderlich의 Design Patterns by Tutorials를 참고했습니다.

https://www.raywenderlich.com/books/design-patterns-by-tutorials/v3.0

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari