Насколько я понимаю, использование шаблона медиатора выглядит примерно так:
- Модули только публикуют, но не подписываются. Посредник подписывается на события и заставляет другие модули выполнять действия на основе этих событий.
Например, допустим, у нас есть редактор javascript. Допустим, есть редактор (для кода) и вкладка «Выполнить» (где вы можете щелкнуть «Выполнить» и просмотреть вывод кода). Каждый из них представляет собой отдельный модуль. Когда пользователь нажимает «Выполнить», модуль вкладки «Выполнение» выводит событие, подобное «runButtonClicked», посредник подписывается на это событие и запускает код, когда это событие запускается. Этот пример немного надуманный и упрощенный, но, надеюсь, он дает некоторое представление о том, чего я пытаюсь достичь.
Допустим, у вас есть некий «класс» Mediator
, с которым каждый модуль взаимодействует через Pub/Sub.
Если я правильно понимаю этот шаблон, то все это имеет смысл. Но возникает проблема, когда вы хотите иметь несколько экземпляров этого основного «приложения» на странице — как приложение узнает, на какие события реагировать, а какие следует оставить для других экземпляров на странице?
Кажется, мне нужно несколько посредников, но я не уверен, как они будут переданы в объекты.
var mediator = new Mediator();
var moduleOne = new moduleOne(mediator);
var moduleTwo = new moduleTwo(mediator);
Этот метод кажется проблематичным, потому что мне нужен доступ к этим двум модулям внутри посредника.
Я также слышал о шаблонах песочницы/фасада, используемых с посредником, но я не уверен, поможет ли какой-либо из них (то есть я не очень хорошо в них разбираюсь).
Обновление Я только что нашел шаблон и создание посредника, который выглядит как возможное решение. Но я также хотел бы знать, правильно ли я использую и думаю об этих шаблонах.