Sobes.tech
Назад к вопросам
Junior — Middle
60

Можете объяснить механизм работы паттерна Observer и как он позволяет реагировать на изменения в объекте?

Ответ от нейросети

sobes.tech AI

Паттерн Observer (Наблюдатель) позволяет объекту (издателю) уведомлять другие объекты (наблюдатели) об изменениях своего состояния без жёсткой связи между ними.

Механизм работы:

  • Издатель содержит список наблюдателей.
  • Наблюдатели подписываются на издателя.
  • Когда состояние издателя меняется, он вызывает метод уведомления для всех подписанных наблюдателей.
  • Наблюдатели получают уведомление и могут обновить своё состояние или выполнить действия.

Это позволяет реализовать реактивное поведение и отделить логику изменения состояния от логики реакции на эти изменения.

Пример на Java:

interface Observer {
    void update(String event);
}

class Subject {
    private List<Observer> observers = new ArrayList<>();

    void addObserver(Observer o) {
        observers.add(o);
    }

    void removeObserver(Observer o) {
        observers.remove(o);
    }

    void notifyObservers(String event) {
        for (Observer o : observers) {
            o.update(event);
        }
    }

    void changeState() {
        // изменение состояния
        notifyObservers("State changed");
    }
}

class ConcreteObserver implements Observer {
    public void update(String event) {
        System.out.println("Received event: " + event);
    }
}