Почему в архитектуре Модуль-Фасад-Медиатор управляющие функции дублируются?

Читаю книгу "Паттерны для масштабируемых JavaScript-приложений" largescalejs.ru/, в 11 главе largescalejs.ru/applying-the-facade-abstraction-of... автор пишет что Фасад кроме того что выступает в роли интерфейса для модулей также контролирует работу модулей. Автор приводит такой пример: Фасад должен убедиться, имеет ли модуль права на запись в базу данных. Контроль - это управляющая функция, тот кто контролирует тот управляет.

Также, автор пишет что основная задача Медиатора largescalejs.ru/applying-the-mediator-the-applicat... это управлять жизненным циклом модулей.

Вопрос: Объясните почему управляющие функции дублируются? Логичнее было бы оставить за Фасадом только роль интерфейса, а все управляющий функции оставить только за Медиатором, или нет?
  • Вопрос задан
  • 3347 просмотров
Пригласить эксперта
Ответы на вопрос 3
@rafaelkyrdan Автор вопроса
Где можно посмотреть на практическую реализацию архитектуры Mодуль-Фасад-Медиатор? Может линк на гитхаб?
Ответ написан
ghaiklor
@ghaiklor
NodeJS TechLead
Фасад - это чисто абстракция. Никаких управляющих функций в нём быть не должно.
Медиатор - это уже поведенческий паттерн (если не ошибаюсь). Через него да, проходят все модули и общаются друг с другом.
Например фасадом может быть расширение функционала, добавление нового элемента, грубо говоря какая-то апишка для вашего кода. Даже если этот код можно вызвать в одну-две строчки, сделать для него фасад будет красиво :)
Ответ написан
:) Фасад - это чисто инкапсуляция! Фасадом мы скрываем или изменяем апи к классу/классам/библиотеке и т.д. В фасаде не зазорно перед доступом к ниже лежащим слоям проверять данные и права доступа, аля Баррикада, создавать нужные обьекты, определять конфигурацию и прочее. А Мадиатор нужен для связи множества классов/обьектов, хотя задачи могут быть даже схожими. Грубо говоря (может легче представить будет): фасад как обёртка над "чем-то целым", а медиатор как прослойка между множеством "чем-то целым".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы