Skip to main content

Як він зменшує зв'язаність між об'єктами?

Патерн 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 знижує зв'язаність, тому що:

  • замінює безліч прямих зв'язків однією центральною,
  • робить компоненти незалежними і переоснащуваними,
  • концентрує взаємодію в одному місці, спрощуючи підтримку й еволюцію системи.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.