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

Фасад также обеспечивает последовательный и доступный в любой момент интерфейс для модулей. Это похоже на песочницу в архитектуре Николаса Закаса.

Все сообщения от модулей, адресованные медиатору, проходят через фасад, поэтому он должен быть весьма надежен. Его роль в этом взаимодействии — анализ сообщений, исходящих от модулей, и передача этих сообщений в медиатор.

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

К примеру, модуль может отправить сообщение dataValidationCompletedWriteToDB. В подобных случаях задача фасада — убедиться, действительно ли этот модуль имеет права на запись в базу данных. Таким образом, мы пытаемся предотвратить проблемы с модулями, которые пытаются делать то, что они не должны.

Подведем итоги: медиатор представляет собой интерпретацию паттерна «подписчик/издатель», но он получает только те сообщения, которые нас действительно интересуют. За фильтрацию же всех сообщений отвечает фасад.

Рекомендуем почитать:
Книги по JavaScript на ozon.ru
Книги по JavaScript на books.ru
Книги по JavaScript на my-shop.ru