Перейти к основному содержимому

Что это такое

Паттерн Фасад (Facade) ставит одну простую дверь перед сложной подсистемой. За дверью несколько частей работают вместе в правильном порядке; перед ней вызывающий код делает один вызов.

Подсистема остаётся полностью доступной для тех, кому нужны детали, — фасад служит удобством, а не стеной.


Пример: один вызов начинает день

Обогреватель, свет, кофемашина — три части, у каждой свой API и свой правильный порядок. start_day() прячет всю последовательность действий за одним вызовом.

Одна простая дверь

Вызывающий код пишет одну строку; фасад знает порядок (сначала обогрев, кофе в конце). Если распорядок меняется, меняется только фасад.

Prompt
Напишите программу на Python с паттерном Фасад: классы Heater, Lights и CoffeeMachine, каждый из которых выводит своё действие, и фасад House, метод start_day которого запускает их в правильном порядке. Начните день одним вызовом.
Вывод: полная программа на Python

Когда его использовать

Используйте его, когда вызывающий код снова и снова повторяет одну и ту же многошаговую последовательность действий с подсистемой или когда нужно предоставить небольшой стабильный интерфейс поверх запутанного или меняющегося.

Не используйте его, когда «подсистема» — это один класс с тремя методами. Фасад над тем, что и так просто, только добавляет лишний уровень.


Плюсы и минусы

Плюсы: вызывающий код получает один простой вызов; правильный порядок хранится ровно в одном месте; подсистема может меняться за стабильным фасадом.

Минусы: фасады склонны разрастаться в классы, которые делают всё; фасад, который скрывает слишком много, вынуждает обходить его.