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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Паттерн 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);
    }
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее