Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як він зменшує зв'язаність між об'єктами?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Патерн **Mediator (Посередник)** зменшує зв'язаність між об'єктами, **замінюючи прямі зв'язки між ними єдиною точкою взаємодії** - централізованим посередником. **Ключове:** він замінює безліч прямих зв'язків однією центральною, роблячи компоненти незалежними і переоснащуваними.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняПатерн **Mediator (Посередник)** зменшує зв'язаність між об'єктами, **замінюючи прямі зв'язки між ними єдиною точкою взаємодії** - централізованим посередником. --- ### 1. **Без посередника - повна сітка залежностей** Якщо об'єкти взаємодіють напряму, кожен повинен **знати про інших**: хто є в системі, які в них методи, коли їх викликати. > Приклад: > У вікні реєстрації поле `Email` повідомляє кнопку `Login`, коли активуватися, > а кнопка, своєю чергою, викликає методи `PasswordField` для перевірки. Результат - **"павутинна архітектура"**, де зміна одного компонента вимагає правок у всіх інших. --- ### 2. **З посередником - усі зв'язки проходять через єдиний об'єкт** Кожен компонент знає лише **одного учасника** - *посередника*: ```java class Button { private Mediator mediator; public void click() { mediator.notify(this, "click"); } } ``` Посередник отримує події від компонентів і вирішує, **хто повинен реагувати**: ```java class DialogMediator implements Mediator { private Button loginButton; private TextBox emailField; private TextBox passwordField; public void notify(Component sender, String event) { if (sender == emailField || sender == passwordField) loginButton.setEnabled(!emailField.isEmpty() && !passwordField.isEmpty()); } } ``` Тепер `EmailField`, `PasswordField` і `Button` **не знають один про одного** - вони просто "повідомляють новини" посереднику. --- ### 3. **Що це дає** - **Послаблення зв'язаності** - кожен об'єкт знає лише Mediator, а не десятки інших компонентів. - **Легка модифікація** - можна додати новий компонент, не змінюючи інші. - **Переоснащуваність** - компоненти стають незалежними і можуть використовуватися в інших контекстах. - **Спрощена логіка взаємодії** - уся поведінка між об'єктами тепер зосереджена в одному місці. --- ### 4. **Аналогія** Без Mediator - як якби кожен пілот літака зв'язувався з усіма іншими напряму. З Mediator - усі пілоти спілкуються лише з **диспетчером**, а диспетчер вирішує, хто і коли повинен діяти. --- ### **Висновок** Патерн **Mediator** знижує зв'язаність, тому що: - замінює **безліч прямих зв'язків однією центральною**, - робить компоненти **незалежними і переоснащуваними**, - концентрує взаємодію в одному місці, спрощуючи підтримку й еволюцію системи.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.