Посредник - это паттерн, который уменьшает связанность между классами, перенося их взаимодействие в отдельный объект-посредник.

Стоит использовать когда множество объектов взаимодействуют друг с другом, когда нужно упростить коммуникацию в сложной системе и для разделения бизнес-логики и механизмов взаимодействия.

Например: `from abc import ABC, abstractmethod

#Интерфейс посредника

class ChatMediator(ABC): @abstractmethod def send_message(self, message: str, sender: 'User'): pass

#Конкретный посредник

class ChatRoom(ChatMediator): def init(self): self._users = []

def add_user(self, user: 'User'): self._users.append(user)

def send_message(self, message: str, sender: 'User'): for user in self._users: if user != sender: # Не отправляем сообщение отправителю user.receive(message)

#Класс пользователя

class User: def init(self, name: str, mediator: ChatMediator): self.name = name self._mediator = mediator

def send(self, message: str): print(f"{self.name} отправляет: {message}") self._mediator.send_message(message, self)

def receive(self, message: str): print(f"{self.name} получает: {message}")

#Использование

chat = ChatRoom()

alice = User("Alice", chat) bob = User("Bob", chat) charlie = User("Charlie", chat)

chat.add_user(alice) chat.add_user(bob) chat.add_user(charlie)

alice.send("Привет всем!") bob.send("Как дела?") Вывод: `Alice отправляет: Привет всем! Bob получает: Привет всем! Charlie получает: Привет всем! Bob отправляет: Как дела? Alice получает: Как дела? Charlie получает: Как дела?

Используется в GUI-фреймворках, чат-системы, торговых системах и игровых движках.

#weekofpatterns``