반응형
Facade Pattern (퍼사드 패턴)
목적
복잡한 서브시스템 내의 인터페이스 집합에 대해서 사용자에게 꼭 필요한 획일화된 인터페이스만을 제공한다.
Facade는 사전상 의미로 표면, 겉, 외관을 의미한다. 의미 그대로 복잡한 서브시스템은 속으로 숨기고 사용자에게 필요한
인터페이스만 표면(Facade)로 보여준다. 이러한 패턴은 사용자와 서브시스템 간의 결합도를 줄여준다.
사용 시나리오
- c, c++파일을 빌드할 수 있는 시스템을 작성한다고 가정한다.
- 빌드 시스템은 전처리->컴파일->어셈블->링크 의 과정을 거치며 각각의 과정은 복잡한 서브시스템으로 구성되어있다.
- 그 중 컴파일 서브시스템은 소스코드를 파싱하고 어셈블리 코드를 생성해내는 인터페이스를 제공한다.(실제로는 더 복잡함)
- 퍼사드 패턴을 통해 컴파일 서브시스템의 획일화된 인터페이스를 제공하도록 한다.
[Subsystem classes]
class Parser {
public:
Parser(string sourceCode) {
cout<<"Parsing sourcecode"<<endl;
}
};
class AssemblyGenerator {
public:
AssemblyGenerator(string parsedCode) {
cout<<"Assembly generated"<<endl;
}
};
[Facade]
class Compiler { //Facade
public:
Compiler(string sourceCode) {
Parser codeParser(sourceCode);
AssemblyGenerator assemblyGenerartor(sourceCode);
}
};
[Client]
int main(int argc, const char * argv[]) {
string code = "sourcecode"
Compiler* compiler = new Compiler(code);
return 0;
}
반응형
'Design Patterns > Structural Patterns' 카테고리의 다른 글
Proxy Pattern (C++) (0) | 2019.12.08 |
---|---|
Flyweight Pattern (C++) (0) | 2019.11.09 |
Bridge Pattern (C++) (0) | 2019.10.13 |
Decorator Pattern (C++) (0) | 2019.07.21 |
Composite Pattern (C++) (0) | 2019.04.21 |