ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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() 클래스로 한 번 더 감싸 복잡한 절차를 사용자가 호출하지 않도록 함으로써 내부 로직을 숨길 수 있고 사용에 편리함을 제공할 수 있습니다.

    이러한 패턴의 주의사항은 복잡한 시스템을 단순화 하기 위해 억지로 퍼사드 패턴을 적용한다면 퍼사드 객체를 사용하는 클라이언트가 할 수 있는 동작이 제한됩니다. 이러한 제한된 동작때문에 사용 패턴에 따라 유사한 퍼사드 객체가 늘어날 수도 있으므로 현실과 타협하여 적당한 균형을 찾는 것이 좋습니다.

    댓글