from abc import ABC, abstractmethod class IMediator(ABC): @abstractmethod def register_user(self): pass @abstractmethod def send_message(self): pass class Mediator: """Класс-посредник, который управляет взаимодействием между пользователями.""" def __init__(self): self._users = [] def register_user(self, user): """Регистрация пользователя в системе.""" self._users.append(user) user.set_mediator(self) def send_message(self, sender, message): """Отправка сообщения от одного пользователя всем остальным.""" for user in self._users: if user != sender: user.receive_message(message) class User: """Класс пользователя, который может отправлять и получать сообщения.""" def __init__(self, name): self._name = name self._mediator = None def set_mediator(self, mediator): """Установка посредника для пользователя.""" self._mediator = mediator def send_message(self, message): """Отправка сообщения через посредника.""" print(f"{self._name} отправляет сообщение: {message}") self._mediator.send_message(self, message) def receive_message(self, message): """Получение сообщения от другого пользователя.""" print(f"{self._name} получил сообщение: {message}") mediator = Mediator() user1, user2, user3 = User("Alice"), User("Bob"), User("Charlie") mediator.register_user(user1) mediator.register_user(user2) mediator.register_user(user3) user1.send_message("Привет всем!")