A pattern that defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
// Observer subject
class Subject {
constructor() { this.observers = [] }
subscribe(observer) {
this.observers = [...this.observers, observer];
}
notify(data) {
this.observers.forEach(obs => obs.update(data));
}
}
// Observer implementation
class Observer {
update(data) {
console.log(`Received update: ${data}`);
}
}
Components update reactively when data changes
Objects react to changes in data models
Event listeners in GUI frameworks
User notifications and alerts