Реальный пример
Рассмотрим реальный пример, чтобы разобраться в том, каким образом медиатор помогает повысить эффективность.
У учителя есть стопка бумаг, которые нужно раздать так, чтобы каждому ученику досталось по одному листку.
Вместо того, чтобы отдать пачку бумаг ученикам, чтобы каждый из них брал по одному листку и передавал ее дальше, учитель решает раздать бумаги самостоятельно.
Таким образом, он несет ответственность за то, чтобы каждый ребенок получил лист бумаги, играя роль медиатора. Затем, когда он доходит до последнего ученика, учащийся в другом конце комнаты поднимает руку и говорит, что не получил листок бумаги.
Попробуем «отладить» эту ситуацию. Сразу напрашивается вывод, что медиатор ответственен за недостающий листок бумаги, поскольку его роль состояла в том, чтобы предоставить каждому ученику лист бумаги.
Более того, у нас также есть точное предсказание того, где в данный момент находится стопка бумаги.
Если учитель передает стопку ученикам, то они будут ответственны за то, чтобы каждый получил лист бумаги. Ученик поднимает руку, говоря, что не получил бумагу, превращая «отладку» этой ситуации в непростую задачу.
Во-первых, нам не известно, где на данный момент находится стопка бумаг. Во-вторых, мы не знаем, кто нарушил процесс. Нам придется спрашивать каждого ученика, кому он передал пачку, чтобы выяснить, почему кто-то не получил листок.
Если вы занимаетесь веб-разработками на JavaScript, то уже работали с медиаторами.
В DOM примером медиатора является объект document, поскольку он может координировать логику и поведение между элементами DOM. Элемент input с type=»radio» также может быть медиатором, поскольку он выбирает, какое радио проверить, и может содержать текущее значение.