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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
5 413
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

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

Судя по тому, что вы использовали здесь слово «содержит», я считаю, что на самом деле это не шаблон «Посредник». Это больше похоже на паттерн Фасад (или на то, что я бы назвал классом менеджера). Посредник, похоже, больше имеет общий класс между двумя классами, возможно, вы переходите от одного к другому, или вы даете ссылку на оба класса, которые затем действуют как косвенная связь между ними.

Andrew 27.05.2020 09:34

И на самом деле общий класс, который вы передаете от одного класса к другому, больше похож на паттерн Легковес, лол. Idk Я думаю, что, возможно, эти определения слишком двусмысленны и / или слишком тесно связаны с конкретными языками.

Andrew 27.05.2020 09:42
Ответ принят как подходящий

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

Неправильное использование посредника может привести к повреждению интерфейсов классов-коллег посредника.

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

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

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

Также я раньше использовал посредника для связи между очень разнородными системами и устаревшими фреймворками.

Event-Pump == Event-Hub, верно? По сути, это просто шина? Или, скорее, посредничество, управляемое событиями (запросы маршрутизации)?

Cody 20.01.2017 01:39

Другие вопросы по теме