Структура работы Facade
- Фасад предоставляет быстрый доступ к определённой функциональности подсистемы. Он «знает», каким классам нужно переадресовать запрос и какие данные для этого нужны.
- Дополнительный фасад можно ввести, чтобы не захламлять единственный фасад разнородной функциональностью. Он может использоваться как клиентом, так и другими фасадами.
- Сложная подсистема состоит из множества разнообразных классов. Для того, чтобы заставить их что-то делать, нужно знать подробности устройства подсистемы, порядок инициализации объектов и так далее.
Классы подсистемы «не знают» о существовании фасада и работают друг с другом напрямую.
- Клиент использует фасад вместо прямой работы с объектами сложной подсистемы.
Псевдокод
В этом примере фасад упрощает работу со сложным фреймворком видеоконвертации.
Пример изоляции множества зависимостей в одном фасаде
Вместо непосредственной работы с дюжиной классов фасад предоставляет коду приложения единственный метод для конвертации видео, который сам заботится о том, чтобы правильно сконфигурировать нужные объекты фреймворка и получить требуемый результат.