49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
|
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("Привет всем!")
|