У чому суть патерна 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
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.