ПАТТЕРН ПОСРЕДНИК PYTHON

Паттерн "Посредник" (Mediator) - это поведенческий паттерн проектирования, которым можно управлять взаимодействием множества объектов между собой. Вместо того, чтобы объекты взаимодействовали напрямую друг с другом, они взаимодействуют через специальный объект - посредник.

В Python можно реализовать паттерн "Посредник" с помощью классов. Например, рассмотрим моделирование работы авиадиспетчерской службы:

class Mediator: def __init__(self): self.flights = [] def register_flight(self, flight): self.flights.append(flight) def can_land(self, flight): for other_flight in self.flights: if other_flight != flight and other_flight.altitude >= 1000: return False return True def notify_landing(self, flight): self.flights.remove(flight) for other_flight in self.flights: other_flight.receive_message(flight.callsign + " has landed.") class Flight: def __init__(self, mediator, callsign, altitude): self.mediator = mediator self.callsign = callsign self.altitude = altitude mediator.register_flight(self) def receive_message(self, message): print(self.callsign + " received message: " + message) def land(self): if self.mediator.can_land(self): self.mediator.notify_landing(self) print(self.callsign + " landed.") else: print(self.callsign + " waiting for landing.")

В этом примере класс Mediator является посредником, который управляет взаимодействием объектов класса Flight. Класс Mediator хранит список зарегистрированных рейсов и имеет метод register_flight для регистрации новых рейсов. Метод can_land проверяет, доступна ли полоса для посадки текущего рейса (полоса должна быть свободна от других рейсов на высоте более 1000 метров). Если полоса свободна, метод notify_landing удаляет текущий рейс из списка рейсов посредника и отправляет сообщение о посадке оставшимся рейсам.

Класс Flight представляет отдельный рейс и имеет метод receive_message для приема сообщений от других рейсов. Метод land получает доступ к посреднику и пытается выполнить посадку. Если посадка удалась, метод удаляет текущий рейс из списка рейсов посредника и выводит сообщение о посадке. Если посадка не удалась, метод выводит сообщение о том, что рейс ожидает посадки.

Кодим Музыкальное desktop Приложение С НУЛЯ....(только на Шаблонах Проектирования)

Паттерны проектирования на Python: Паттерн Прототип

Паттерны проектирования на Python: Iterator, Mediator

ЛУЧШИЙ ПАТТЕРН ДЛЯ МИКРОСЕРВИСОВ. CQRS ИЛИ РАЗДЕЛЕНИЕ ЧТЕНИЯ И ЗАПИСИ

Python. Паттерн проектирования программ \

Парсинг на Python - Зарабатываем на фрилансе - Копируем сайт - Requests, BS4, JSON

Python парсинг динамических страниц сайтов с JavaScript Ajax

Мастер-класс: \

Принципы SOLID - На примере Python

Паттерн Mediator на Python

BLGPG-2CB16AB4CEA4-24-11-24-00

Новые материалы: