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

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

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

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

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

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

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

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

Фасад

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

Підсистема

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

Клієнт

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

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

Переваги

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

Недоліки

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

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

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

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

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

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

Реалізація

C++

C#

Джерела


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.