Observable: визуальный подход к программированию и анализу данных

Observable - это паттерн проектирования, который позволяет объекту отправлять уведомления своим наблюдателям об изменениях своего состояния.

В примере ниже показана реализация паттерна Observable на языке Java:


import java.util.ArrayList;
import java.util.List;
interface Observer {
    void update();
}
class Observable {
    private List observers = new ArrayList<>();
    public void addObserver(Observer observer) {
        observers.add(observer);
    }
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}
class ConcreteObservable extends Observable {
    private String state;
    public String getState() {
        return state;
    }
    public void setState(String state) {
        this.state = state;
        notifyObservers(); // отправляем уведомление об изменении состояния
    }
}
class ConcreteObserver implements Observer {
    private ConcreteObservable observable;
    public ConcreteObserver(ConcreteObservable observable) {
        this.observable = observable;
        observable.addObserver(this); // подписываемся на уведомления от наблюдаемого объекта
    }
    @Override
    public void update() {
        System.out.println("Состояние наблюдаемого объекта изменилось: " + observable.getState());
    }
}
public class Main {
    public static void main(String[] args) {
        ConcreteObservable observable = new ConcreteObservable();
        ConcreteObserver observer = new ConcreteObserver(observable);
        observable.setState("Новое состояние"); // изменяем состояние наблюдаемого объекта, что вызывает уведомление наблюдателя
    }
}

В данном примере класс `Observable` представляет наблюдаемый объект, у которого есть методы для добавления/удаления наблюдателей и отправки уведомлений. Класс `ConcreteObservable` наследуется от `Observable` и представляет конкретную реализацию наблюдаемого объекта. У него есть свойство `state`, изменение которого вызывает отправку уведомлений наблюдателям. Класс `Observer` представляет наблюдателя, у которого есть метод `update()`, который будет вызываться при получении уведомления. Класс `ConcreteObserver` наследуется от `Observer` и реализует метод `update()`, который просто выводит текущее состояние наблюдаемого объекта.

В методе `main()` создается объект `ConcreteObservable` и объект `ConcreteObserver`, при этом объект `ConcreteObserver` подписывается на уведомления от наблюдаемого объекта. Затем изменяется состояние наблюдаемого объекта, что вызывает вызывает отправку уведомления наблюдателю. В результате на консоль будет выведено сообщение "Состояние наблюдаемого объекта изменилось: Новое состояние".

Похожие вопросы на: "observable "

Округление в JavaScript: как округлить числа до нужного знака после запятой
NGEN - переход на новый уровень генетической инженерии
Как выполнять деление в Python: учимся работать с числами
Конвертер Touppercase: Преобразуйте текст в верхний регистр онлайн!
Vendor MAC Address Lookup Tool
Как исправить ошибку ERR_UNKNOWN_URL_SCHEME и продолжить работу в интернете
Решение проблемы 504 Gateway Time-out на Nginx: советы и инструкции
Arduino DigitalRead: принцип работы и примеры использования
Python writelines
Создание CSS выпадающего списка