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

Можете объяснить, что такое паттерн "наблюдатель" и в каких случаях его применяют?

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

sobes.tech AI

Паттерн "наблюдатель" (Observer) — это поведенческий паттерн, который позволяет объекту (издателю) оповещать другие объекты (наблюдатели) об изменениях своего состояния.

Применяется, когда нужно реализовать механизм подписки, чтобы при изменении данных автоматически обновлять связанные компоненты без тесной связи между ними.

Пример: в GUI при изменении модели данных все связанные представления (виджеты) получают уведомление и обновляются.

Пример на Java:

interface Observer {
    void update();
}

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

    public void attach(Observer o) {
        observers.add(o);
    }

    public void setState(int state) {
        this.state = state;
        notifyAllObservers();
    }

    private void notifyAllObservers() {
        for (Observer o : observers) {
            o.update();
        }
    }
}

class ConcreteObserver implements Observer {
    @Override
    public void update() {
        System.out.println("State changed, observer notified.");
    }
}