Назад к вопросам
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);
}
}