Когда бы вы использовали шаблон дизайна посредника - PullRequest
8 голосов
/ 17 декабря 2008

Как указано в заголовке, когда вы порекомендуете использовать шаблон проектирования медиатора и где, по вашему мнению, он используется неправильно?

Ответы [ 3 ]

19 голосов
/ 17 декабря 2008

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

Злоупотребление посредником может привести к повреждению интерфейсов классов коллег посредника.

Кажется немного смешным говорить о неправильном использовании шаблона. Если ваша реализация следует шаблону, то вы использовали шаблон. В противном случае у вас нет. Другими словами, если ваш посредник делает что-то еще, то он, вероятно, не является посредником. Шаблоны определяются тем, что они делают, что они на самом деле. Названия вещей - просто ярлыки.

Реальный вопрос, который нужно задать себе, - соответствует ли ваша реализация шаблона обещаниям шаблона для вашего дизайна. Паттерн посредника направлен на инкапсуляцию сложной межобъектной коммуникации, когда она становится неуправляемой. Если он этого не достиг или не сделал очень хорошо, можно сказать, что медиатором злоупотребляют. В какой-то момент это становится оценочным суждением.

2 голосов
/ 17 декабря 2008

Я использовал его для работы со свинг-приложениями.

Когда я создаю графический интерфейс, мне не нравится, когда каждый элемент управления знает друг друга, потому что это потребует создания подклассов.

Вместо этого у меня есть главный объект, который содержит слушателя и виджеты и позволяет ему быть посредником между различными элементами управления, кнопками, текстовыми полями и т. Д.

1 голос
/ 17 декабря 2008

Посредник - это, в основном, ивент-насос. Очень распространенный шаблон в графических интерфейсах и играх.

Кроме того, ранее я использовал медиатор для связи между очень разрозненными системами и устаревшими средами.

...