320x100
구조
#pragma once
#include <iostream>
class ClassA
{
public:
void Operate()
{
std::cout << "Operating ClassA" << std::endl;
}
};
class ClassB
{
public:
void Operate()
{
std::cout << "Operating ClassB" << std::endl;
}
};
class ClassC
{
public:
void Operate()
{
std::cout << "Operating ClassC" << std::endl;
}
};
class Facade
{
public:
Facade(ClassA* classA, ClassB* classB, ClassC* classC)
{
classA_ = classA;
classB_ = classB;
classC_ = classC;
}
void OperateClassA()
{
classA_->Operate();
}
void OperateClassB()
{
classB_->Operate();
}
void OperateClassC()
{
classC_->Operate();
}
private:
ClassA* classA_;
ClassB* classB_;
ClassC* classC_;
};
사용
int main()
{
ClassA* classA = new ClassA;
ClassB* classB = new ClassB;
ClassC* classC = new ClassC;
Facade* facade = new Facade(classA, classB, classC);
facade->OperateClassA();
facade->OperateClassB();
facade->OperateClassC();
return 0;
}
파사드 객체는 클라이언트를 대신하여 객체들과 상호 작용하며, 객체들을 통합시킨 간략한 인터페이스를 클라이언트에게 제공한다.
클라이언트가 내부 구조에 의존하지 않고 파사드 객체를 통해 객체 구조를 제어할 수가 있어 코드의 유연성이 향상된다.
320x100
'프로그래밍 > GoF' 카테고리의 다른 글
[구조 패턴] - 프록시 (Proxy) (0) | 2022.01.12 |
---|---|
[구조 패턴] - 플라이웨이트(Flyweight) (0) | 2022.01.12 |
[구조 패턴] - 데코레이터(Decorator) (0) | 2022.01.11 |
[구조 패턴] - 컴포지트(Composite) (0) | 2022.01.11 |
[구조 패턴] - 브릿지(Bridge) (0) | 2022.01.10 |