Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τι είναι το μοτίβο "παρατηρητής" και σε ποιες περιπτώσεις εφαρμόζεται;

sobes.tech AI

Απάντηση από 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.");
    }
}