Фаса́д — шаблон проєктування, призначений для об'єднання групи підсистем під один уніфікований інтерфейс, надаючи доступ до них через одну точку входу. Це дозволяє спростити роботу з підсистемами.

Фасад належить до структурних шаблонів проєктування.

Складові шаблону Класи, з яких складається шаблон можна розділити на 3 частини: фасад; підсистеми; клієнти.

Ролі складових

Фасад Визначає певним підсистемам інтерфейс, отже знає кому адресувати запити; делегує запити клієнтів потрібним об'єктам підсистеми; створює нові методи, котрі об'єднують виклики об'єктів системи і\або додають свою логіку; приховує підсистеми; зменшує кількість параметрів методів, шляхом попередньої підстановки визначених значень.

Підсистема реалізує функціонал, закритий та не видимий для зовнішніх компонентів виконує роботу, запитану клієнтом через фасад. не зберігає посилання на фасад — це означає що одна підсистема може мати довільну кількість фасадів.

Клієнт здійснює запити фасаду; не знає про існування підсистем.

Переваги та недоліки

Переваги Приховує реалізацію підсистеми від клієнтів, що полегшує використання підсистеми Сприяє слабкій взаємодії між підсистемою та її клієнтами. Це дозволяє змінити класи, які включають підсистему, не впливаючи на клієнтів. Зменшує компіляційні залежностей у великих програмних системах Спрощує системи перенесення на інші платформи, оскільки менш імовірно, що для побудови однієї підсистеми потрібно побудувати всі інші

Недоліки Не заважає сучасним клієнтам отримувати доступ до базових класів Фасад не додає жодної функції, він просто спрощує інтерфейси

Випадки використання Фасад використовується у випадках, коли потрібно: спростити доступ до складної системи; створити рівні доступу до системи; додати стійкість до змін підсистем; зменшити кількість сильних зв'язків між клієнтом та підсистемою, але залишити доступ до повної функціональності.

Зв'язок з іншими патернами Фасад створює новий інтерфейс доступу, адаптер — використовує старий

Реалізація

C++

C#

Джерела

www.dofactory.com