Web-програмування - blog archive - шаблон observer (спостерігач) на java

У статті буде реалізований один з патернів поведінки Спостерігач.

Основне завдання спостерігати за змінним об'єктом і оповіщати тих, хто залежить від даного об'єкта.

Наприклад, у нас є дані, які відображаються у вигляді таблиці і графіка. При зміні даних ми повинні оновити таблицю і графік. В такому випадку треба застосовувати патерн Спостерігач.

При реалізації шаблону "спостерігач" зазвичай використовуються наступні інтерфейси і класи:

Observable (спостережуваний) - інтерфейс, який визначає методи для додавання, видалення та оповіщення спостерігачів;
Observer (спостерігач) - інтерфейс, за допомогою якого спостерігач отримує сповіщення;
ConcreteObservable - конкретний клас, який реалізує інтерфейс Observable;
ConcreteObserver - конкретний клас, який реалізує інтерфейс Observer

Web-програмування - blog archive - шаблон observer (спостерігач) на java

У наш прикладі клас, в якому дані змінюються - це буде клас ConcreteObservable, тому що в ньому відбуваються зміни даних і він повинен повідомляти про свої зміни. Графік і таблиця - це Спостерігачі (Observer), які стежать за змінами даних.

Спостерігачі застосовуються в MVC моделі.Есть модель, яка працює з даними і кілька в'юшок (View), які ці дані відображають. У MVC шаблоні, модель нічого не знає про в'юшках, вона тільки оперує даними і все, в моделі ми не можемо на пряму звертатися до в'юшки. View будуються на основі моделі їм переданої. Модель буде успадкувати інтерфейс Observable і повідомляти в'юшки про свої зміни. В'юшки будуть отримувати повідомлення про зміну моделі і оновлюватися, тобто успадкувати Observer інтерфейс.

Наведемо реалізацію паттерна Спостерігач на простому прикладі погоди.

Схожі статті