Паттерн проектирования "Наблюдатель" (Observer) — это поведенческий паттерн, который определяет зависимость типа "один ко многим" между объектами.
Основная идея: когда состояние одного объекта (издателя/субъекта) изменяется, все зависимые от него объекты (наблюдатели/подписчики) автоматически получают уведомление об этом и обновляются.
Компоненты паттерна:
- Издатель (Subject/Observable): Объект, состояние которого может меняться. Он содержит список своих наблюдателей и предоставляет методы для их регистрации (подписки), отмены регистрации (отписки) и уведомления.
- Наблюдатель (Observer): Объект, который зависит от состояния Издателя. Он предоставляет метод
update()
, который вызывается Издателем при изменении его состояния.
- Конкретный Издатель (Concrete Subject): Конкретная реализация Издателя. Содержит данные, которые интересны наблюдателям. При изменении этих данных, он вызывает метод уведомления.
- Конкретный Наблюдатель (Concrete Observer): Конкретная реализация Наблюдателя. Реализует метод
update()
для выполнения определенных действий в ответ на уведомление от Издателя.
Принцип работы:
- Наблюдатели регистрируются у Издателя, выражая интерес к его состоянию.
- Когда состояние Издателя меняется, он проходит по списку зарегистрированных наблюдателей.
- Издатель вызывает метод
update()
каждого наблюдателя, передавая, при необходимости, информацию об изменении.
- Наблюдатели обрабатывают полученное уведомление.
Применение в QA Automation:
- Мониторинг состояния UI-элементов или процессов.
- Отслеживание изменений в логах или файлах конфигурации.
- Реализация событийной модели для взаимодействия между различными частями фреймворка автоматизации.
Преимущества:
- Слабая связанность между Издателем и Наблюдателями.
- Возможность добавления/удаления наблюдателей динамически.
- Поддержка принципа "один ко
Паттерн проектирования "Наблюдатель" (Observer) — это поведенческий паттерн, который определяет зависимость типа "один ко многим" между объектами.
Основная идея: когда состояние одного объекта (издателя/субъекта) изменяется, все зависимые от него объекты (наблюдатели/подписчики) автоматически получают уведомление об этом и обновляются.
Компоненты паттерна:
- Издатель (Subject/Observable): Объект, состояние которого может меняться. Он содержит список своих наблюдателей и предоставляет методы для их регистрации (подписки), отмены регистрации (отписки) и уведомления.
- Наблюдатель (Observer): Объект, который зависит от состояния Издателя. Он предоставляет метод
update()
, который вызывается Издателем при изменении его состояния.
- Конкретный Издатель (Concrete Subject): Конкретная реализация Издателя. Содержит данные, которые интересны наблюдателям. При изменении этих данных, он вызывает метод уведомления.
- Конкретный Наблюдатель (Concrete Observer): Конкретная реализация Наблюдателя. Реализует метод
update()
для выполнения определенных действий в ответ на уведомление от Издателя.
Принцип работы:
- Наблюдатели регистрируются у Издателя, выражая интерес к его состоянию.
- Когда состояние Издателя меняется, он проходит по списку зарегистрированных наблюдателей.
- Издатель вызывает метод
update()
каждого наблюдателя, передавая, при необходимости, информацию об изменении.
- Наблюдатели обрабатывают полученное уведомление.
Применение в QA Automation:
- Мониторинг состояния UI-элементов или процессов.
- Отслеживание изменений в логах или файлах конфигурации.
- Реализация событийной модели для взаимодействия между различными частями фреймворка автоматизации.
Преимущества:
- Слабая связанность между Издателем и Наблюдателями.
- Возможность добавления/удаления наблюдателей динамически.
- Поддержка принципа "один ко