Skip to content

Mediator

Pandas edited this page Jun 19, 2017 · 1 revision

Назначение

Определяет объект, инкапсулирующий способ взаимодействия множества объектов. Посредник обеспечивает слабую связанность системы, избавляя объекты от необходимости явно ссылаться друг на друга и позволяя тем самым независимо изменять взаимодействия между ними.

Применимость

Используйте паттерн посредник, когда

  • Имеются объекты, связи между которыми сложны и четко определены. Получающиеся при этом взаимозависимости не структурированы и трудны для понимания;
  • Нельзя повторно использовать объект, поскольку он обменивается информацией со многими другими объектами;
  • Поведение, распределенное между несколькими классами, должно поддаваться настройке без порождения множества подклассов.

Структура

Imgur

Участники

  • Mediator (DialogDirector) - посредник; определяет интерфейс для обмена информацией с объектами Colleague;
  • ConcreteMediator (FontDialogDirector) - конкретный посредник: реализует кооперативное поведение, координируя действия объектов Colleague; владеет информацией о коллегах и подсчитывает их;
  • Классы Colleague (ListBox, EntryField) - коллеги: каждый класс Colleague «знает» о своем объекте Mediator; все коллеги обмениваются информацией только с посредником, так как при его отсутствии им пришлось бы общаться между собой напрямую.

Отношения

Коллеги посылают запросы посреднику и получают запросы от него. Посред ник реализует кооперативное поведение путем переадресации каждого запроса подходящему коллеге (или нескольким коллегам).

Результаты

У паттерна посредник есть следующие достоинства и недостатки:

  • Снижает число порождаемых подклассов.
  • Устраняет связанность между коллегами.
  • Упрощает протоколы взаимодействия объектов.
  • Абстрагирует способ кооперирования объектов.
  • Централизует управление.

Clone this wiki locally