Посредник (Mediator) — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
[[Страница_курса_Паттерны_проектирования| К основной странице курса]] | [[Страница_курса_Паттерны_проектирования| К основной странице курса]] | ||
− | + | __NOTOC__ | |
=== Описание === | === Описание === | ||
В большой системе с множеством объектов каждый объект может передавать сообщения другому. В результате этого сильно возрастает количество связей между объектами (n^2). | В большой системе с множеством объектов каждый объект может передавать сообщения другому. В результате этого сильно возрастает количество связей между объектами (n^2). |
Версия 17:11, 20 июля 2014
Описание
В большой системе с множеством объектов каждый объект может передавать сообщения другому. В результате этого сильно возрастает количество связей между объектами (n^2).
Вместо этого предлагается завести объект-посредник, через который передавать эти сообщения (n связей)
Пример
При выборе поля списка меняется поле ввода
Участники
- Widget и его наследники - взаимодействующие через посредника объекты
- FontDialogDirector - посредник
Диаграмма классов для примера
Как работает:
- Изменившийся ListBox вызывает Changed(), который вызывает FontDialogDirector.WidgetChanged().
- FontDialogDirector.WidgetChanged вызывает GetSelection() для объекта ListBox и затем SetText для связанного объекта TextField
Диаграмма последовательности для примера
Общая диаграмма классов для паттерна Посредник
Участники
- Mediator - посредник. Определяет интерфейс для обмена информацией с объектами Colleague
- ConcreteMediator. Владеет информацией о всех объектах Colleague, координирует их действие
- Colleague. Каждый объект Colleague знает о своем объекте Mediator. Все объекты Colleague обмениваются информацией только с посредником
Достоинства
- Устраняет связанность между коллегами
- Выделяет механизм взаимодействия объектов в отдельную сущность
Недостатки
- Централизует управление. Посредник становится монолитом, который трудно сопровождать