Что такое паттерн Посредник (Mediator)?
Паттерн Посредник используется для упрощения взаимодействий между множеством объектов, убирая прямые связи между ними.
Короткий ответ
Паттерн Посредник вводит объект-посредник, который управляет взаимодействием между другими объектами, снижая их взаимозависимость.
Длинный ответ
В сложных системах с большим количеством взаимодействующих объектов прямое связывание может привести к путанице и затруднить поддержку. Паттерн Посредник решает эту проблему, вводя центральный объект, который координирует взаимодействия.
Пример из реальной жизни:
Диспетчер в аэропорту координирует действия самолётов: они взаимодействуют не напрямую, а через диспетчера.
Реализация в Python:
class Mediator:
def notify(self, sender, event):
pass
class ConcreteMediator(Mediator):
def __init__(self):
self.component1 = None
self.component2 = None
def notify(self, sender, event):
if event == "Event1":
print("Mediator реагирует на Event1 и вызывает Component2.")
self.component2.do_something()
elif event == "Event2":
print("Mediator реагирует на Event2 и вызывает Component1.")
self.component1.do_something_else()
class Component1:
def __init__(self, mediator):
self.mediator = mediator
def do_something(self):
print("Component1 вызывает событие.")
self.mediator.notify(self, "Event1")
def do_something_else(self):
print("Component1 делает что-то другое.")
class Component2:
def __init__(self, mediator):
self.mediator = mediator
def do_something(self):
print("Component2 вызывает событие.")
self.mediator.notify(self, "Event2")
# Использование
mediator = ConcreteMediator()
component1 = Component1(mediator)
component2 = Component2(mediator)
mediator.component1 = component1
mediator.component2 = component2
component1.do_something()
component2.do_something()
Когда использовать:
- Для координации взаимодействий между объектами без создания жёстких связей.
- В сложных системах, где взаимодействие между компонентами усложняет поддержку кода.