Які мінуси у Mediator?
Патерн Mediator (Посередник) вирішує проблему надлишкових зв'язків між об'єктами, але при цьому сам може створити нові складнощі, якщо використовується без міри.
1. Посередник може стати "божественним об'єктом"
Головний ризик - поступове розростання посередника. Коли вся взаємодія зосереджена в одному класі, він починає керувати надто багатьма процесами - від логіки UI до бізнес-правил.
Зрештою Mediator перетворюється на "монолітний контролер", де зміни однієї частини впливають на все інше.
2. Складність розуміння і супроводу логіки
Поведінка системи стає менш прозорою - компоненти більше не взаємодіють напряму, і зрозуміти, хто що викликає, можна тільки вивчивши код посередника.
Це знижує читабельність, особливо при великій кількості подій і станів.
3. Проблеми з масштабованістю
Якщо кількість учасників зростає, Mediator повинен враховувати більше комбінацій взаємодій. Це ускладнює структуру, і будь-яка нова логіка вимагає зміни посередника - тим самим частково порушується принцип open/closed (OCP).
4. Ризик надмірної централізації
Замість безлічі залежностей між об'єктами з'являється одна гігантська залежність від посередника. Усі компоненти стають слабко зв'язані між собою, але жорстко зв'язані з Mediator.
5. Зниження продуктивності (у деяких сценаріях)
Якщо посередник обробляє велику кількість подій чи сповіщень, може виникнути зайва прошарок викликів і тимчасові накладні витрати.
Висновок
| Мінус | Суть |
|---|---|
| "Божественний об'єкт" | Посередник стає перевантаженим логікою |
| Втрата прозорості | Важко зрозуміти, хто викликає кого |
| Порушення OCP | Будь-яка нова взаємодія вимагає зміни Mediator |
| Надмірна централізація | Усі залежать від одного посередника |
| Можливі накладні витрати | Додаткові кроки при передачі повідомлень |
Підсумок: Патерн Mediator знижує зв'язаність, але при неправильному застосуванні створює нову точку крихкості - перевантаженого координатора, у якому концентрується забагато логіки і залежностей.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.