Як він зменшує зв'язаність між об'єктами?
Патерн Mediator (Посередник) зменшує зв'язаність між об'єктами, замінюючи прямі зв'язки між ними єдиною точкою взаємодії - централізованим посередником.
1. Без посередника - повна сітка залежностей
Якщо об'єкти взаємодіють напряму, кожен повинен знати про інших: хто є в системі, які в них методи, коли їх викликати.
Приклад: У вікні реєстрації поле
Login, коли активуватися, а кнопка, своєю чергою, викликає методиPasswordFieldдля перевірки.
Результат - "павутинна архітектура", де зміна одного компонента вимагає правок у всіх інших.
2. З посередником - усі зв'язки проходять через єдиний об'єкт
Кожен компонент знає лише одного учасника - посередника:
class Button {
private Mediator mediator;
public void click() {
mediator.notify(this, "click");
}
}Посередник отримує події від компонентів і вирішує, хто повинен реагувати:
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 знижує зв'язаність, тому що:
- замінює безліч прямих зв'язків однією центральною,
- робить компоненти незалежними і переоснащуваними,
- концентрує взаємодію в одному місці, спрощуючи підтримку й еволюцію системи.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.