파사드 패턴(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;
}
장점
- 복잡한 서브 시스템 코드를 분리할 수 있다.
단점
- 앱의 모든 클래스에 결합한 구조가 되지 않도록 조심해야 한다.
반응형