На сайте интернет-магазина периодически может заканчиваться определенный товар. В то же время некоторые пользователи могут быть заинтересованы в этом предмете, которого пока что нет в наличии. У этой проблемы может быть 3 варианта решения:
Покупатель самостоятельно периодически проверяет наличие товара.
Интернет-магазин засыпает пользователей оповещениями о поступлениях всех новых товаров в наличие.
Пользователь подписывается только на тот конкретный предмет, который его интересует, и получает оповещение о его возвращении на полки магазина. Также, на один и тот же продукт могут подписаться несколько покупателей.
Вариант 3 звучит наиболее эффективно, и фактически это и есть суть паттерна Наблюдатель. Главные элементы этого паттерна проектирования следующие:
Издатель — публикует событие, когда что-то происходит.
Наблюдатель — подписывается на события субъекта и получает оповещения в случае их возникновения.