Карта курса → Модуль 2 → Урок 2.4

Паттерн «Наблюдатель»

Событийное мышление: реагируем на изменения, а не опрашиваем бесконечно.

Паттерн «Наблюдатель»

🎣 Hook

Observer-блок в Minecraft ловит изменение рядом и сразу даёт сигнал. Он не «проверяет каждую миллисекунду».

🧠 Concept

Термины: list, dictionary, loop, function — пишем по-английски, объясняем по-русски.

Паттерн «Наблюдатель» связывает источник события и подписчиков.

Источник: «изменилось состояние двери».
Подписчики: лампа, сирена, логгер.

В коде это часто функции-обработчики (callbacks):
- подписаться на событие;
- получить уведомление;
- выполнить действие.

🧩 Квиз +10 XP
Зачем нужен паттерн «Наблюдатель»?
A Чтобы сортировать массивы
B Чтобы реагировать на события
C Чтобы шифровать данные
D Чтобы хранить изображения

🔧 Практика

Задание 1: впиши название события и обработчик.

events = {}
events["door_open"] = "on_door_open"
print(events)

Заполни пропуски в коде в своей тетради/редакторе. Ключевые ответы: door_open/on_door_open.

Задание 2: допиши ключ события тревоги.

handlers = {"alarm": "send_message"}
print(handlers["alarm"])

Проверь себя: alarm.

🧩 Квиз +10 XP
Кто инициирует уведомление в Observer?
A Подписчик
B Случайный модуль
C Источник события
D База данных

🏗️ Сборка: мини-проект

Спроектируй мини-систему умного дома: события door_open, motion_detected, fire_alert и по 2 подписчика на каждое.

👹 Мини-босс +120 XP

Комбинируем текущую тему с предыдущими навыками.

A Сделать без структуры, потом чинить
B Сначала план, затем реализация и проверка
C Копировать решение без понимания
D Пропустить тесты ради скорости

💭 Reflection

Ты освоил реактивный подход: система отвечает на события по мере их появления. Так работают UI, чат-боты и игровые триггеры.