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





Я использовал его для работы с приложениями для качелей.
Когда я создаю графический интерфейс, мне не нравится, что каждый элемент управления знает друг друга, потому что для этого потребуется создание подклассов.
Вместо этого у меня есть объект Main, который содержит слушателя и виджеты и позволяет ему выступать посредником между различными элементами управления, кнопками, текстовыми полями и т. д.
И на самом деле общий класс, который вы передаете от одного класса к другому, больше похож на паттерн Легковес, лол. Idk Я думаю, что, возможно, эти определения слишком двусмысленны и / или слишком тесно связаны с конкретными языками.
Используйте посредник, когда сложность объектной коммуникации начинается с препятствовать повторному использованию объекта. Этот тип сложности часто появляется в экземплярах представления, хотя на самом деле он может быть где угодно.
Неправильное использование посредника может привести к повреждению интерфейсов классов-коллег посредника.
Кажется немного забавным говорить о неправильном использовании выкройки. Если ваша реализация следует шаблону, значит, вы использовали шаблон. В противном случае вы этого не сделали. Другими словами, если ваш посредник занимается чем-то другим, он, вероятно, не посредник. Паттерны определяются тем, что они делают, что они есть на самом деле. Имена вещей - это просто ярлыки.
Настоящий вопрос, который следует задать себе, заключается в том, выполняет ли ваша реализация шаблона обещания, которые он дает для вашего дизайна. Шаблон посредника направлен на инкапсуляцию сложной межобъектной коммуникации, когда она становится неуправляемой. Если он этого не сделал или сделал это не очень хорошо, можно сказать, что посредник используется не по назначению. В какой-то момент это становится оценочным суждением.
Посредник - это также, по сути, насос событий. Очень распространенный шаблон в графических интерфейсах и играх.
Также я раньше использовал посредника для связи между очень разнородными системами и устаревшими фреймворками.
Event-Pump == Event-Hub, верно? По сути, это просто шина? Или, скорее, посредничество, управляемое событиями (запросы маршрутизации)?
Судя по тому, что вы использовали здесь слово «содержит», я считаю, что на самом деле это не шаблон «Посредник». Это больше похоже на паттерн Фасад (или на то, что я бы назвал классом менеджера). Посредник, похоже, больше имеет общий класс между двумя классами, возможно, вы переходите от одного к другому, или вы даете ссылку на оба класса, которые затем действуют как косвенная связь между ними.