Observer — это поведенческий паттерн, где Subject хранит список зависимых объектов, называемых Observer'ами. Когда состояние Subject меняется, он автоматически уведомляет всех зарегистрированных Observer'ов об обновлении.
Представь студентов, которые ждут результаты тестов:
Это демонстрирует, как паттерн обеспечивает связь один-со-многими между объектами.
Паттерн Observer широко используется в архитектурном паттерне Model-View-Controller (MVC), где:
Критическая проблема паттерна Observer — риск утечек памяти. Subject хранит сильные ссылки на Observer'ов, что не даёт сборщику мусора их удалить.
Чтобы предотвратить утечки памяти:
Если не отписывать Observer'ов, память будет накапливаться со временем, снижая производительность приложения.
В паттерне Observer предмет (Subject) хранит сильные ссылки на своих наблюдателей (Observers), что означает, что наблюдатели не будут автоматически удалены сборщиком мусора, даже если они больше не нужны приложению.
Новый — ещё не проверен сообществом
Вы