Observer pattern — one-to-many dependency where observers subscribe to a subject. EventEmitter — Node.js implementation of the observer pattern.
Observer pattern (custom):
1class Subject {2 constructor() {3 this.observers = [];4 }56 subscribe(observer) {7 this.observers.push(observer);8 return () => {9 this.observers = this.observers.filter(o => o !== observer);10 };11 }1213 notify(data) {14 this.observers.forEach(o => o(data));15 }16}1718const subject = new Subject();19const unsub = subject.subscribe(data => console.log(data));20subject.notify("hello");21unsub(); // unsubscribe
EventEmitter:
1const EventEmitter = require("events");2const emitter = new EventEmitter();3emitter.on("data", (msg) => console.log(msg));4emitter.emit("data", "hello");
Key differences: