Как работает объект-посредник? Какая идея стоит за этим?

Меня интересует объект-посредник, потому что он кажется полезным, но расшифровка примеров кода, чтобы узнать, как взаимодействовать с этим объектом и создавать его, ускользает от меня. Я люблю примеры кода, если они сопровождаются пояснениями, пусть и короткими. Может ли кто-нибудь просто объяснить, что я создаю, когда создаю объект-посредник?

Будет ли объект-посредник способом обработки событий действия, отправляемых между классами? или объект-посредник просто лучше подходит для объединения подобного кода в одном удобном месте?

Я не знаю, практично ли это для удобства или практично ли это, потому что нет другого способа сделать то, что он делает. Любые детали, как бы они ни были «оболванены», были бы превосходны. Заранее спасибо.


person Lucas    schedule 22.03.2013    source источник
comment
Пробовали ли вы читать статью Википедии о шаблоне Mediator?   -  person RJo    schedule 22.03.2013
comment
Да, я просто не понимаю английское описание того, что делает объект, например на самом деле. Я думаю, мне интересно, это что-то, что вы создаете специально для своих нужд, или есть стандарт, которого я должен придерживаться, когда пытаюсь это сделать.   -  person Lucas    schedule 22.03.2013


Ответы (1)


Объект-посредник предназначен для того, чтобы сам ничего не делать. Вы не должны перемещать в него какую-либо логику, которая у вас уже есть, за исключением, возможно, некоторого мультиплексирования/демультиплексирования (когда один объект отправляет одно и то же сообщение нескольким другим объектам). Медиатор — это всего лишь внешний интерфейс (если он одновременно служит фасадом) и определенно канал передачи сообщений между уже существующими объектами.

Точно так же не следует создавать посредника, пока вы уже не осознаете необходимость такого канала передачи сообщений. Как выглядит такая потребность? У вас уже есть набор объектов, которые начинают вызывать друг друга все более сложными способами. Эти объекты хранят ссылки друг на друга; количество таких ссылок уже становится больше, чем количество самих таких объектов.

Таким образом, вместо того, чтобы каждый объект разговаривал с каждым объектом (с квадратичным числом ссылок и сложным графом взаимодействий), вы вводите для взаимодействий звездообразную топологию; все напрямую разговаривают только с посредником. Тогда легче создавать экземпляры, контролировать, отлаживать, расширять, полиморфизировать...

Не начинайте вводить посредников слишком рано, иначе общая сложность вырастет, а не уменьшится.

person Jirka Hanika    schedule 22.03.2013
comment
Это был фантастический ответ, который дал мне представление о каждом аспекте, который меня смущал. Спасибо большое! - person Lucas; 18.04.2013