Что такое шаблон проектирования Observer?
Согласно GoF, шаблон проектирования Observer должен «определять зависимость «один ко многим» между объектами, чтобы при изменении состояния одного объекта все его зависимые объекты уведомлялись и обновлялись автоматически».
Диаграмма классов шаблона проектирования наблюдателя:
Как мы видим на диаграмме классов, шаблон проектирования наблюдателя состоит из двух основных компонентов:
1- Тема:
Они издатели. Когда в субъекте происходит изменение, он должен уведомить всех своих подписчиков.
2- Наблюдатели:
Они подписчики. Они просто прислушиваются к изменениям в предметах.
Понимание шаблона проектирования наблюдателя на примере:
Предположим, что три пользователя пришли на сайт Amazon для покупки мобильного телефона, и все они хотят одного и того же типа мобильного телефона (например, MobilePro), но, к сожалению, в то время состояние этого типа было Недоступно.
Предположим, что на сайте Amazon есть опция под названием уведомить меня, когда статус продукта изменится на Доступен, и три вышеуказанных пользователя присоединились к этой опции.
В наших примерах MobilePro является субъектом, а три пользователя (т. е. User1, User2 и User3) являются наблюдателями. Для лучшего понимания посмотрите на следующие две диаграммы.
Реализация: