Skip to content

Files

Latest commit

37c0cd1 · Dec 16, 2018

History

History

Observer

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Dec 8, 2015
Dec 16, 2018
Dec 16, 2018

Наблюдатель (Observer)

Паттерн Observer относится к поведенческим паттернам уровня объекта.

Паттерн Observer определяет зависимость "один-ко-многим" между объектами так, что при изменении состояния одного объекта все зависящие от него объекты уведомляются об этом и обновляются автоматически.

Основные участиники паттерна это Издатели (Subject) и Подписчики (Observer).

Имеется два способа получения уведомлений от издателя:

  1. Метод вытягивания: После получения уведомления от издателя, подписчик должен пойти к издателю и забрать (вытянуть) данные самостоятельно.
  2. Метод проталкивания: Издатель не уведомляет подписчика об обновлениях данных, а самостоятельно доставляет (проталкивает) данные подписчику.

Требуется для реализации:

  1. Абстрактный класс Subject, определяющий интерфейс Издателя;
  2. Класс ConcreteSubject, реализует интерфейс Subject;
  3. Абстрактный класс Observer, определяющий общий функционал Подписчиков;
  4. Класс ConcreteObserver, реализует Подписчика;

[!] В описании паттерна применяются общие понятия, такие как Класс, Объект, Абстрактный класс. Применимо к языку Go, это Пользовательский Тип, Значение этого Типа и Интерфейс. Также в языке Go за место общепринятого наследования используется агрегирование и встраивание.

-- THE END --