-
[Design Pattern] 퍼사드 패턴 (Facade Pattern)공부/디자인 패턴 2020. 7. 25. 23:34
퍼사드 패턴은 복잡한 호출 과정을 한 번 더 감싸서 단순한 형태로 제공하는 패턴입니다. 예를 들어, 특정 쇼핑몰에서 A라는 상품을 사기 위해서는 A 상품의 물건이 존재하는지, 주문자의 지역에 배송이 가능한지, 배송업체가 존재하는지 등 특정 절차를 밟아야 합니다. 퍼사드 패턴을 적용하지 않는다면 사용자가 복잡한 절차를 순서있게 호출해야 하지만 퍼사드 패턴을 적용하면 주문하기 와 같은 버튼 1개로 노출하고 복잡한 절차를 숨길 수 있습니다.
class Qty: def check(self): pass class Delivery: def valid(self): pass class Amount: def check(self): pass # 퍼사드 클래스 class Order: def __init__(self): self.qty = Qty() self.delivery = Delivery() self.amount = Amount() def order(self): self.qty.check() self.delivery.valid() self.amount.check() order = Order() order.order()
해당 패턴은 흔히 사용되는 패턴입니다. 위 예제에서 Order() 클래스로 한 번 더 감싸 복잡한 절차를 사용자가 호출하지 않도록 함으로써 내부 로직을 숨길 수 있고 사용에 편리함을 제공할 수 있습니다.
이러한 패턴의 주의사항은 복잡한 시스템을 단순화 하기 위해 억지로 퍼사드 패턴을 적용한다면 퍼사드 객체를 사용하는 클라이언트가 할 수 있는 동작이 제한됩니다. 이러한 제한된 동작때문에 사용 패턴에 따라 유사한 퍼사드 객체가 늘어날 수도 있으므로 현실과 타협하여 적당한 균형을 찾는 것이 좋습니다.