Programming Languange/디자인 패턴

디자인 패턴 (Design Patterns) - 파사드 패턴

타자치는 문돌이 2024. 4. 9. 17:45

파사드 패턴(Facade Pattern)은 복잡한 서브 시스템의 인터페이스를 제공하는 패턴이다.

객체가 필요한 기능의 클래스를 직접 사용하는 대신, 인터페이스를 구현해 인터페이스를 통해 기능을 사용한다.

구현

파사드 패턴은

  • Facade
  • Subsystem
    으로 구성된다.
    Facade는 Subsystem의 인터페이스이다.

Subsystem

Subsystem은 클라이언트가 사용하려 하는 다양한 기능이다.

class Inventory {
public:
	bool checkInventory(int productId, int quantity);
};

class PaymentProcessor {
public:
	bool processPayment(float amount);
};

class Shipping {
public:
	void shipProduct(int productId, int quantity, std::string address);
};

Facade

// Facade
class OrderProcessor {
private:
    Inventory inventory;
    PaymentProcessor paymentProcessor;
    Shipping shipping;

public:
    bool processOrder(int productId, int quantity, float amount, std::string address) 
    {
    	// 주문 처리를 간소화한 인터페이스 제공
        if (inventory.checkInventory(productId, quantity)) 
        {
            if (paymentProcessor.processPayment(amount)) 
            {
                shipping.shipProduct(productId, quantity, address);
                std::cout << "Order processed successfully\n";
                return true;
            } 
            else 
            {
                std::cout << "Payment processing failed\n";
            }
         } 
         else 
         {
            std::cout << "Insufficient inventory\n";
         }
         return false;
     }
};

예시

// Client
int main() {
    OrderProcessor orderProcessor;

    orderProcessor.processOrder(1234, 2, 50.0, "123 Main St");

    return 0;
}

장점

  • 복잡한 서브 시스템 코드를 분리할 수 있다.

단점

  • 앱의 모든 클래스에 결합한 구조가 되지 않도록 조심해야 한다.

 

디자인 패턴 (Design Patterns) - Index