Посредник (Mediator) — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Admin (обсуждение | вклад) (→Пример) |
Admin (обсуждение | вклад) (→Пример) |
||
Строка 11: | Строка 11: | ||
* Widget и его наследники - взаимодействующие через посредника объекты | * Widget и его наследники - взаимодействующие через посредника объекты | ||
* FontDialogDirector - '''посредник''' | * FontDialogDirector - '''посредник''' | ||
+ | |||
+ | [[Изображение:MediatorExample.png|780px]] | ||
Как работает: | Как работает: | ||
* Изменившийся ListBox вызывает Changed(), который вызывает FontDialogDirector.WidgetChanged(). | * Изменившийся ListBox вызывает Changed(), который вызывает FontDialogDirector.WidgetChanged(). | ||
* FontDialogDirector.WidgetChanged вызывает GetSelection() для объекта ListBox и затем SetText для связанного объекта TextField | * FontDialogDirector.WidgetChanged вызывает GetSelection() для объекта ListBox и затем SetText для связанного объекта TextField | ||
− | |||
− |
Версия 12:08, 20 июля 2014
Описание
В большой системе с множеством объектов каждый объект может передавать сообщения другому. В результате этого сильно возрастает количество связей между объектами (n^2).
Вместо этого предлагается завести объект-посредник, через который передавать эти сообщения (n связей)
Пример
При выборе поля списка меняется поле ввода
Здесь:
- Widget и его наследники - взаимодействующие через посредника объекты
- FontDialogDirector - посредник
Как работает:
- Изменившийся ListBox вызывает Changed(), который вызывает FontDialogDirector.WidgetChanged().
- FontDialogDirector.WidgetChanged вызывает GetSelection() для объекта ListBox и затем SetText для связанного объекта TextField