Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Что такое паттерн Посредник (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()

 

Когда использовать:

- Для координации взаимодействий между объектами без создания жёстких связей.

- В сложных системах, где взаимодействие между компонентами усложняет поддержку кода.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • Python

Ключевые слова

#mediator

#pattern

#design

#arhitecture

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.