Фасад (шаблон проєктування)

(Перенаправлено з Фасад (шаблон проектування))

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

Діаграма класів

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

Складові шаблону ред.

Класи, з яких складається шаблон можна розділити на 3 частини:

  1. фасад;
  2. підсистеми;
  3. клієнти.

Ролі складових ред.

Фасад ред.

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

Підсистема ред.

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

Клієнт ред.

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

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

Переваги ред.

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

Недоліки ред.

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

Випадки використання ред.

Фасад використовується у випадках, коли потрібно:

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

Зв'язок з іншими патернами ред.

  • Фасад створює новий інтерфейс доступу, адаптер — використовує старий

Реалізація ред.

C++ ред.

C# ред.

Джерела ред.