Паттерн Фасад (Facade) предоставляет унифицированный интерфейс к набору интерфейсов в подсистеме. Он определяет интерфейс более высокого уровня, который упрощает использование подсистемы.
Основные характеристики:
- Скрывает сложность системы, предоставляя простой интерфейс.
- Снижает зависимость клиента от непосредственной работы с подсистемой.
- Объединяет различные классы и методы подсистемы в один фасадный класс.
Пример использования:
Предположим, у нас есть сложная подсистема для работы с аудио, включающая классы для загрузки, декодирования и воспроизведения.
python
Без Фасада, клиенту пришлось бы работать напрямую с этими классами:
python
Применение Фасада упрощает этот процесс:
python
Преимущества:
- Упрощение: Предоставляет простой API.
- Инкапсуляция: Скрывает детали реализации подсистемы.
- Слабая связность: Клиент зависит только от Фасада, а не от множества классов подсистемы.
Недостатки:
- Фасад может стать "божественным объектом" (god object), если в нем соберется слишком много логики.
Применимость:
- Когда требуется предоставить простой интерфейс к сложной подсистеме.
- Для уменьшения зависимостей между клиентом и компонентами подсистемы.
- Для структурирования подсистемы на уровни.