Паттерны на ruby: Наблюдатель
Описание:
Данный паттерн создает механизм подписки одних объектов на изменение состояний других объектов.
Пример задачи:
Представим книжный магазин.
Нужно реализовать функционал подписывания на оповещения о состоянии книг.
Покупатель может подписаться на сообщение о том что книга появилась в продаже. А кладовщик получает сообщение о том что каких то книжек уже нет на складе.
Реализация:
Для описания книжек создадим класс <Book>. За книги отвечает кладовщик (Storekeeper). Каждый день книги покупают покупатели (Customer). Для реализации подписки создадим абстрактный модуль Subject который можно будет заинклудить в класс <Book>. Благодаря чему экземпляры классов <Customer> и <Storekeeper> смогу подписываться на сообщения о состояниях книг.