Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: observer, arhitecture, design

Что такое паттерн Наблюдатель (Observer)?

Паттерн Наблюдатель используется для автоматического уведомления связанных объектов об изменении состояния другого объекта.

Короткий ответ

Паттерн Наблюдатель определяет зависимость "один ко многим", где изменение состояния одного объекта автоматически уведомляет все связанные объекты. Это полезно для реализации системы событий и реакций.

Длинный ответ

Паттерн Наблюдатель применяется, когда несколько объектов должны реагировать на изменение состояния одного объекта, но прямые зависимости между ними создавать нежелательно. Главный объект, называемый издатель, отслеживает список подписчиков (наблюдателей) и уведомляет их при изменении.

Пример из реальной жизни:
Подписка на новости: издатель (например, газета) уведомляет подписчиков (читателей) о выпуске новых статей.

Реализация в Python:

class Publisher:
    	def __init__(self):
        	self.subscribers = []

    	def subscribe(self, subscriber):
        	self.subscribers.append(subscriber)

    	def unsubscribe(self, subscriber):
        	self.subscribers.remove(subscriber)

    	def notify(self, message):
        	for subscriber in self.subscribers:
            		subscriber.update(message)

class Subscriber:
    	def update(self, message):
        	print(f"Получено сообщение: {message}")

# Использование
publisher = Publisher()
sub1 = Subscriber()
sub2 = Subscriber()

publisher.subscribe(sub1)
publisher.subscribe(sub2)

publisher.notify("Новая статья доступна!")

Когда использовать:

  • Для реализации системы событий.

  • Когда требуется уведомлять множество объектов об изменении состояния другого объекта.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • Python

    Python

Ключевые слова

#observer

#arhitecture

#design

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.