Посередник (шаблон проєктування)

Посередник (англ. Mediator) шаблон проєктування, відноситься до класу шаблонів поведінки.

Призначення

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

Застосовність

Слід використовувати шаблон Посередник у випадках, коли:

  • існують об'єкти, зв'язки між котрими досить складні та чітко задані. Отримані при цьому залежності не структуровані та важкі для розуміння;
  • не можна повторно використовувати об'єкт, оскільки він обмінюється інформацією з багатьма іншими об'єктами;
  • поведінка, розподілена між кількома класами, повинна піддаватися налагодженню без створювання множини підкласів.

Структура

UML діаграма, що описує структуру шаблону проєктування Посередник
  • Mediator — посередник:
    • визначає інтерфейс для обміну інформацією з об'єктами Colleague;
  • ConcreteMediator — конкретний посередник:
    • реалізує кооперативну поведінку, координуючи дії об'єктів Colleague;
    • володіє інформацією про колег, та підраховує їх;
  • Класи Colleague — колеги:
    • кожному класу Colleague відомо про свій об'єкт Mediator;
    • усі колеги обмінюються інформацією виключно через посередника, інакше за його відсутності їм довелося б спілкуватися між собою напряму.

Відносини

Колеги посилають запити посередникові та отримують запити від нього. Посередник реалізує кооперативну поведінку шляхом переадресації кожного запиту відповідному колезі (або декільком з них).

Переваги та недоліки

Переваги

  • Медіатор вказує логіку посередництва між колегами. З цієї причини це легше зрозуміти цю логіку, оскільки вона зберігається лише в одному класі.
  • Класи колег повністю відокремлені. Додавання нового класу колеги дуже легко через цей рівень роз'єднання.
  • Об'єкти колеги повинні спілкуватися лише з об'єктами посередника. Практично модель медіатора зменшує необхідні канали зв'язку (протоколи) від багатьох до багатьох до одного до багатьох і багатьох до одного.
  • Оскільки вся логіка зв'язку вказується класом посередника, коли ця логіка потребує розширення, лише клас посередника потрібно розширити.

Недоліки

  • Складність — на практиці посередники стають все більш складними та складними

Зв'язок із іншими патернами

  • Посередник створює двосторонній зв'язок, часто незмінний. Забирає залежності між компонентами системи. Компоненти стають залежними від посередника. Спостерігач створює односторонній зв'язок, який може мінятись під час виконання програми. Таким чином одні об'єкти залежать від інших.

Приклади

C++

C#

Java

Python

TypeScript

Джерела

Література

Алан Шаллоуей, Джеймс Р. Тротт. Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию = Design Patterns Explained: A New Perspective on Object-Oriented Design. — М. : «Вильямс», 2002. — 288 с. — ISBN 0-201-71594-5.

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.