Мы начинаем знакомство с очень популярным и востребованным шаблоном проектирования - Наблюдатель / Observer. По-другому он называется Подчинённые / Dependents. Этот шаблон активно используется в событийно-ориентированных языках программирования.
На следующих уроках мы создадим несколько программ, на примере которых лучше уясним суть этого шаблона проектирования.
Дата отправки отчёта:
25 апреля 2018 г.
Задание выполнено: за
13 мин.
Чему научился:
Реализация данного паттерна используется для наблюдения за состоянием объектов в системе. Если состояние объектов изменяется в процессе их жизненного цикла, то Наблюдатель оповещает другие части системы об этих событиях. Пример из жизни: Когда я в группе it-sphere размещаю сообщение, то о нем становится известно всем, кто подписан на группу. Тоже самое, если я размещаю новый сюжет на канале. Я, конечно, не смотрел исходники YouTube, но очень вероятно, что они использовали именно этот шаблон. Subject – субъект. Регистрирует своих наблюдателей. За субъектом может «следить» любое число наблюдателей. Предоставляет интерфейс для регистрации и, соотвественно, отписки наблюдателей. источник codelab.ru оригинал codelab.ru Observer – наблюдатель. Определяет интерфейс для уведомления подписчисчиков, т.е. объектов, заинтересованных в изменениях субъекта. codelab.ru codelab.ru оригинал источник ConcreteSubject - конкретный субъект. Сохраняет состояние, представляющее интерес для любого конкретного наблюдателя ConcreteObserver. Посылает информацию своим наблюдателям, когда происходит изменение. codelab.ru источник codelab.ru оригинал ConcreteObserver - конкретный наблюдатель. Хранит ссылку на объект класса ConcreteSubject (для того чтобы потом обращаться к нему за синхронизацией данных). Сохраняет данные, которые должны быть согласованы с данными субъекта. Реализует интерфейс обновления, определенный в классе Observer, чтобы «быть уведомленным» о изменениях ConcreteSubject-а.
Научился: отличный урок. наблюдатель позволяет оповещать подписчиков об изменениях,
и не надо лишний раз дергаться, подписался и ждешь. )
В общем, не надо мстить и убивать своих врагов, просто садимся на берегу реки и ждем. Через некоторое время мимо труп твоего врага проплывет мимо.
Научился: Повторил пройденное Наблюдатель следит за состоянием каких либо объектов и как только состояние изменилось, оповещает всех, кто находится в списке оповещения именно по этому объекту. т.е. в нашем случае, если ты находишься в пределах слышимости звонка, то ты будешь добавлен в список и оповещён о звонке, но если ты ушёл за пределы слышимости звонка, то автоматом удаляешься из списка оповещения и не услышишь звонок, который прозвенит. Естественно, удаление, добавления в список это уже доп. функционал, который анализирует дальность до объекта того, кого можно оповестить, чтобы данная система работала как нужно =)