Посредник - это паттерн, который уменьшает связанность между классами, перенося их взаимодействие в отдельный объект-посредник.
Стоит использовать когда множество объектов взаимодействуют друг с другом, когда нужно упростить коммуникацию в сложной системе и для разделения бизнес-логики и механизмов взаимодействия.
Например: `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-фреймворках, чат-системы, торговых системах и игровых движках.