-
Notifications
You must be signed in to change notification settings - Fork 3
Mediator
Pandas edited this page Jun 19, 2017
·
1 revision
Определяет объект, инкапсулирующий способ взаимодействия множества объектов. Посредник обеспечивает слабую связанность системы, избавляя объекты от необходимости явно ссылаться друг на друга и позволяя тем самым независимо изменять взаимодействия между ними.
Используйте паттерн посредник, когда
- Имеются объекты, связи между которыми сложны и четко определены. Получающиеся при этом взаимозависимости не структурированы и трудны для понимания;
- Нельзя повторно использовать объект, поскольку он обменивается информацией со многими другими объектами;
- Поведение, распределенное между несколькими классами, должно поддаваться настройке без порождения множества подклассов.
- Mediator (DialogDirector) - посредник; определяет интерфейс для обмена информацией с объектами Colleague;
- ConcreteMediator (FontDialogDirector) - конкретный посредник: реализует кооперативное поведение, координируя действия объектов Colleague; владеет информацией о коллегах и подсчитывает их;
- Классы Colleague (ListBox, EntryField) - коллеги: каждый класс Colleague «знает» о своем объекте Mediator; все коллеги обмениваются информацией только с посредником, так как при его отсутствии им пришлось бы общаться между собой напрямую.
Коллеги посылают запросы посреднику и получают запросы от него. Посред ник реализует кооперативное поведение путем переадресации каждого запроса подходящему коллеге (или нескольким коллегам).
У паттерна посредник есть следующие достоинства и недостатки:
- Снижает число порождаемых подклассов.
- Устраняет связанность между коллегами.
- Упрощает протоколы взаимодействия объектов.
- Абстрагирует способ кооперирования объектов.
- Централизует управление.
