Фасад
Facade
Назначение
Предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы.
Результаты
1. Паттерн фасад изолирует клиентов от компонентов подсистемы, уменьшая тем самым число объектов, с которыми клиентам приходится иметь дело, и упрощая работу с подсистемой.
2. Зачастую компоненты подсистемы сильно связаны. Ослабление связей между подсистемой и ее клиентами позволяет видоизменять компоненты подсистемы, не затрагивая при этом клиентов. Также сокращение числа зависимостей за счет фасадов может уменьшить количество нуждающихся в повторной компиляции файлов после небольшой модификации какой-нибудь важной подсистемы. Фасад может упростить процесс переноса системы на другие платформы, поскольку уменьшается вероятность того, что в результате изменения одной подсистемы понадобится изменять и все остальные.
3. Фасад не препятствует приложениям напрямую обращаться к классам подсистемы, если это необходимо. Таким образом, у вас есть выбор между простотой и общностью.
Структура
Реализация
//
//
class Component1 {
public:
void Operation1();
} component1;
class Component2 {
public:
void Operation2();
} component2;
//
class Facade {
public:
void Operation1() { component1.Operation1(); }
void Operation2() { component2.Operation2(); }
} facade;
//
facade.Operation1();
facade.Operation2();