Façade

금융 거래 시스템에서 콘솔이 퍼사드에 해당한다.
(콘솔 내부에 많은 수의 서로 다른 객체들이 동작한다.)
struct Console{
vector<Viewport*> viewports;
Size charSize, gridSize;
// ...
}; // 퍼사드는 최대한 단순한 API를 제공
Console::Console(bool fullscreen, int char_width, int char_height, int width, int height, optional<Size> client_size){
// 버퍼와 뷰포트를 적절히 viewports에 매핑
// 이미지 텍스처 생성
// 전체 화면 모드에 맞는 그리드 크기 계산
}
// 혹은 모든 파라미터를 객체 하나에 묶어서 전달
Console::Console(const ConsoleCreationParameters& ccp){
// ...
}
struct ConsoleCreationParameters{
optional<Size> client_size;
int character_width{10};
int character_height{14};
int width{20};
int height{30};
bool fullscreen{false};
bool create_default_view_and_buffer{true};
};
퍼사드 디자인 패턴은 하나 이상의 복잡한 서브 시스템 앞에 단순한 인터페이스를 두기 위한 방법이다.
(다수의 버퍼와 다수의 뷰포트가 연동되는 복잡한 콘솔을 편리하고 직관적인 API로 이용