Паттерн: Посредник (Mediator)
1️⃣ Как кратко ответить
Паттерн "Посредник" (Mediator) — это поведенческий шаблон проектирования, который используется для уменьшения прямых зависимостей между объектами, позволяя им общаться через центральный объект-посредник. Это упрощает взаимодействие между компонентами системы и улучшает её масштабируемость и поддерживаемость.
2️⃣ Подробное объяснение темы
Паттерн "Посредник" (Mediator) — это один из поведенческих шаблонов проектирования, который помогает организовать взаимодействие между объектами в системе.
Зачем нужен паттерн "Посредник"?
В сложных системах объекты часто взаимодействуют друг с другом. Если каждый объект напрямую общается с другими, это может привести к сложной сети зависимостей, что затрудняет понимание, поддержку и расширение системы. Паттерн "Посредник" решает эту проблему, вводя центральный объект, который управляет взаимодействием между другими объектами.
Как работает паттерн "Посредник"?
Посредник действует как центральный узел, через который проходят все коммуникации между объектами. Вместо того чтобы объекты напрямую взаимодействовали друг с другом, они отправляют сообщения посреднику, который решает, как их обработать и кому передать.
Вот простая аналогия: представьте себе диспетчера в аэропорту. Вместо того чтобы пилоты самолётов напрямую общались друг с другом, они связываются с диспетчером, который координирует их действия, чтобы избежать столкновений и обеспечить плавное движение.
Пример использования
Рассмотрим пример чата, где несколько пользователей могут отправлять сообщения друг другу. Без посредника каждый пользователь должен знать о всех других пользователях, чтобы отправлять им сообщения. С посредником (сервером чата) пользователи отправляют свои сообщения на сервер, который затем передаёт их нужным получателям.
class Mediator:
def notify(self, sender, event):
pass
class ConcreteMediator(Mediator):
def __init__(self):
self._component1 = None
self._component2 = None
def set_component1(self, component):
self._component1 = component
def set_component2(self, component):
self._component2 = component
def notify(self, sender, event):
if event == "A":
print("Mediator reacts on A and triggers following operations:")
self._component2.do_c()
elif event == "D":
print("Mediator reacts on D and triggers following operations:")
self._component1.do_b()
self._component2.do_c()
class BaseComponent:
def __init__(self, mediator=None):
self._mediator = mediator
def set_mediator(self, mediator):
self._mediator = mediator
class Component1(BaseComponent):
def do_a(self):
print("Component 1 does A.")
self._mediator.notify(self, "A")
def do_b(self):
print("Component 1 does B.")
class Component2(BaseComponent):
def do_c(self):
print("Component 2 does C.")
def do_d(self):
print("Component 2 does D.")
self._mediator.notify(self, "D")
# Клиентский код
mediator = ConcreteMediator()
c1 = Component1(mediator)
c2 = Component2(mediator)
mediator.set_component1(c1)
mediator.set_component2(c2)
print("Client triggers operation A.")
c1.do_a()
print("\nClient triggers operation D.")
c2.do_d()
Где применяется паттерн "Посредник"?
Паттерн "Посредник" часто используется в системах, где требуется координация между множеством объектов, таких как:
- Графические интерфейсы: для управления взаимодействием между различными элементами интерфейса.
- Чат-системы: для управления сообщениями между пользователями.
- Системы управления событиями: для координации действий между различными компонентами.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться