Skip to main content

У чому суть патерна Façade?

Facade (Фасад) - це структурний патерн, що надає спрощений, єдиний інтерфейс до складної підсистеми, приховуючи її внутрішні деталі та залежності.


1. Суть ідеї

У великих системах компоненти взаємодіють через безліч класів, методів і модулів. Фасад виступає як єдина точка входу, яка:

  • інкапсулює складність,
  • координує роботу підсистем,
  • робить інтерфейс для клієнта простим і зрозумілим.

2. Коли використовувати

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

3. Приклад (Java)

Без фасаду:

java
VideoFile file = new VideoFile("movie.avi"); Codec codec = new MPEG4Codec(); AudioMixer mixer = new AudioMixer(); BitrateReader.read(file, codec); mixer.fix(file);

З фасадом:

java
class VideoConverter { public File convert(String filename, String format) { // усередині - складна логіка System.out.println("Конвертація відео..."); return new File("output." + format); } } // Клієнт: VideoConverter converter = new VideoConverter(); converter.convert("movie.avi", "mp4");

Тепер клієнту не потрібно знати про Codec, Reader і Mixer: усе приховано за фасадом.


4. Переваги

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

5. Недоліки

  • Може перетворитися на "божественний об'єкт", якщо в нього додавати занадто багато логіки.
  • Іноді ускладнює доступ до просунутих функцій, схованих за простим інтерфейсом.

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

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.